简体   繁体   English

XML字符串到XML文档

[英]XML string to XML document

我在String中有一个完整的XML文档,我需要将其转换为XML文档并解析文档中的标记

This code sample is taken from csharp-examples.net , written by Jan Slama : 此代码示例取自Jan Slama编写的csharp-examples.net

To find nodes in an XML file you can use XPath expressions. 要在XML文件中查找节点,可以使用XPath表达式。 Method XmlNode.SelectNodes returns a list of nodes selected by the XPath string. 方法XmlNode.SelectNodes返回由XPath字符串选择的节点列表。 Method XmlNode.SelectSingleNode finds the first node that matches the XPath string. 方法XmlNode.SelectSingleNode查找与XPath字符串匹配的第一个节点。

XML: 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); } 

Using Linq to xml 使用Linq到xml

Add a reference to System.Xml.Linq 添加对System.Xml.Linq的引用

and use 并使用

XDocument.Parse(string xmlString)

Edit: Sample follows, xml data (TestConfig.xml).. 编辑: 示例如下,xml数据(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... C#用法......

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 此代码生成以下输出:0002 0006

根据您想要的文档类型,您可以使用XmlDocument.LoadXmlXDocument.Load

Try this code: 试试这段代码:

var myXmlDocument = new XmlDocument();
myXmlDocument.LoadXml(theString);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM