c# - 使用XPath读取xml

标签 c# xml xpath

我有这个 XML:

<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
  <book id="ISBN-NUMBER">
    <title>
      The Autobiography of Benjamin Franklin
    </title>
    <author type="major">
      <first-name>
        Benjamin
      </first-name>
      <last-name>
        Franklin
      </last-name>
    </author>
    <price>
      8.99
    </price>
  </book>
  <book id="ISBN-NUMBER">
    <title>
      The Confidence Man
    </title>
    <author type="major">
      <first-name>
        Herman
      </first-name>
      <last-name>
        Melville
      </last-name>
    </author>
    <price>
      11.99
    </price>
  </book>
  <book id="ISBN-NUMBER">
    <title>
      The Gorgias
    </title>
    <author type="major">
      <name>
        Plato
      </name>
    </author>
    <price>
      9.99
    </price>
  </book>
</bookstore>

如何使用 XPath 读取它?我用过:

XPathDocument doc = new XPathDocument(stream);
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator node = nav.Select("bookstore/book");

while (node.MoveNext())

但是我该如何继续前进呢?我想我需要一个 switch 语句来切换节点是否是标题、作者和价格。如果是书,那么我需要阅读书籍 ID,与作者和类型相同。

最佳答案

我想,您可以使用node.Select('//title')来获取标题。我不确定这在 C# 中是如何工作的,但常见的 xpath 如下

  • //bokstore/book 选择书籍节点。
  • //bookstore/book/title 选择标题节点
  • //bookstore/book[n]/* 选择第n个节点的所有子节点。

关于c# - 使用XPath读取xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293389/

相关文章:

c# - double float 和 float 精度之间的差异

SQL - 在 XML.value() 中使用变量作为整个 XQuery 路径

xml - 如何从 Web API 方法返回 Xml 数据?

xml - XPath 语法,带或不带 "/text()"后缀

c# - 使用 namespace 获取 XML 节点的最简单方法?

c# - 在C#中获取连接到WLAN路由器的所有设备的MAC地址

c# - 在后面的代码中设置显示属性

java - 具有系统变量的 WSO2 JMS 地址端点 uri

xpath - 如何在 XPath 中为空节点的 text() 返回 ''?

c# - .NET COM 回调