C#中指定块内的XmlDocument GetElementsByTagName

Dor*_*oro 2 c# xml xmldocument linq-to-xml

我有一个xml文件,当前正在获取按标签名称的元素。我试图实现的是指定要使用的块,例如书店或商店。感谢您的帮助和建议。

XML:

<VariablesSpecs name="Data01">
  <bookstore>
    <book genre='novel' ISBN='10-861003-324'>
      <title>The Handmaid's Tale</title>
      <price>19.95</price>
    </book>
  </bookstore>
  <shop>
    <book genre='novel' ISBN='10-861003-324'>
      <title>The Handmaid's Tale</title>
      <price>19.95</price>
    </book>
  </shop>
</VariablesSpecs>
Run Code Online (Sandbox Code Playgroud)

码:

var doc = new XmlDocument();
doc.Load("data.xml");

var bookNodes = doc.GetElementsByTagName("book");
foreach (var bookNode in bookNodes)
{
    // Collect data.
}
Run Code Online (Sandbox Code Playgroud)

Flo*_*ger 5

您没有使用Linq to XML:

var doc = XDocument.Load("data.xml");

var bookNodes = doc.Descendants("book").Where(b=> b.Parent.Name == "shop");
Run Code Online (Sandbox Code Playgroud)

使用常规的System.Xml:

var doc = new XmlDocument();
doc.Load("data.xml");
var bookNodes = doc.SelectNodes(@"//bookstore/book");
foreach (XmlNode item in bookNodes)
{
    string title = item.SelectSingleNode("./title").InnerText;
    string price = item.SelectSingleNode("./price").InnerText;
    Console.WriteLine("title {0} price: {1}",title,price); //just for demo
}
Run Code Online (Sandbox Code Playgroud)