XML string to XML document

后端 未结 4 717
夕颜
夕颜 2021-01-30 10:36

I have a whole XML document in a String which i need to convert to a XML document and parse tags in the document

相关标签:
4条回答
  • 2021-01-30 10:43

    Using Linq to xml

    Add a reference to System.Xml.Linq

    and use

    XDocument.Parse(string xmlString)
    

    Edit: Sample follows, xml data (TestConfig.xml)..

    <?xml version="1.0"?>
    <Tests>
      <Test TestId="0001" TestType="CMD">
        <Name>Convert number to string</Name>
        <CommandLine>Examp1.EXE</CommandLine>
        <Input>1</Input>
        <Output>One</Output>
      </Test>
      <Test TestId="0002" TestType="CMD">
        <Name>Find succeeding characters</Name>
        <CommandLine>Examp2.EXE</CommandLine>
        <Input>abc</Input>
        <Output>def</Output>
      </Test>
      <Test TestId="0003" TestType="GUI">
        <Name>Convert multiple numbers to strings</Name>
        <CommandLine>Examp2.EXE /Verbose</CommandLine>
        <Input>123</Input>
        <Output>One Two Three</Output>
      </Test>
      <Test TestId="0004" TestType="GUI">
        <Name>Find correlated key</Name>
        <CommandLine>Examp3.EXE</CommandLine>
        <Input>a1</Input>
        <Output>b1</Output>
      </Test>
      <Test TestId="0005" TestType="GUI">
        <Name>Count characters</Name>
        <CommandLine>FinalExamp.EXE</CommandLine>
        <Input>This is a test</Input>
        <Output>14</Output>
      </Test>
      <Test TestId="0006" TestType="GUI">
        <Name>Another Test</Name>
        <CommandLine>Examp2.EXE</CommandLine>
        <Input>Test Input</Input>
        <Output>10</Output>
      </Test>
    </Tests>
    

    C# usage...

    XElement root = XElement.Load("TestConfig.xml");
    IEnumerable<XElement> tests =
        from el in root.Elements("Test")
        where (string)el.Element("CommandLine") == "Examp2.EXE"
        select el;
    foreach (XElement el in tests)
        Console.WriteLine((string)el.Attribute("TestId"));
    

    This code produces the following output: 0002 0006

    0 讨论(0)
  • 2021-01-30 10:52

    Try this code:

    var myXmlDocument = new XmlDocument();
    myXmlDocument.LoadXml(theString);
    
    0 讨论(0)
  • 2021-01-30 10:58

    Depending on what document type you want you can use XmlDocument.LoadXml or XDocument.Load.

    0 讨论(0)
  • 2021-01-30 11:04

    This code sample is taken from csharp-examples.net, written by Jan Slama:

    To find nodes in an XML file you can use XPath expressions. Method XmlNode.Selec­tNodes returns a list of nodes selected by the XPath string. Method XmlNode.Selec­tSingleNode finds the first node that matches the XPath string.

    XML:

    <Names>
        <Name>
            <FirstName>John</FirstName>
            <LastName>Smith</LastName>
        </Name>
        <Name>
            <FirstName>James</FirstName>
            <LastName>White</LastName>
        </Name>
    </Names>
    

    CODE:

    XmlDocument xml = new XmlDocument();
    xml.LoadXml(myXmlString); // suppose that myXmlString contains "<Names>...</Names>"
    
    XmlNodeList xnList = xml.SelectNodes("/Names/Name");
    foreach (XmlNode xn in xnList)
    {
      string firstName = xn["FirstName"].InnerText;
      string lastName = xn["LastName"].InnerText;
      Console.WriteLine("Name: {0} {1}", firstName, lastName);
    }
    
    0 讨论(0)
提交回复
热议问题