c# - C#中指定 block 内的XmlDocument GetElementsByTagName

标签 c# xml linq-to-xml xmldocument

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

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>

代码:

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

var bookNodes = doc.GetElementsByTagName("book");
foreach (var bookNode in bookNodes)
{
    // Collect data.
}

最佳答案

您没有使用 Linq to XML:

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

var bookNodes = doc.Descendants("book").Where(b=> b.Parent.Name == "shop");

使用常规 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
}

关于c# - C#中指定 block 内的XmlDocument GetElementsByTagName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28580857/

相关文章:

c# - 在不依赖 Azure 云服务的情况下读写 Excel 的最佳方式?

c# - 需要有关在 .NET 4 中解析 XML 的信息

vb.net - 将 xdocument 元素(不是元素)作为字符串传递

c# - 你能强制将枚举值序列化为整数吗?

c# - float.Parse 返回不正确的值

c# - WCF 通过命名管道与非 .net 应用程序通信

c++ - 有没有办法在 C++ 中将 JSON 转换为 XML?

xml - 显示基于 XML 的布局和动态添加文本的问题

c# - 如何查询带有 'path' 的 XDocument?

c# - 将基于命名空间的元素添加到现有 XML 文件