如何阅读XPathNodelist

本文关键字:XPathNodelist 何阅读 | 更新日期: 2023-09-27 18:33:41

C# 编程 我得到了一个 Xml.XpathNodeList 对象 "ResultsPartRel.nodeList"。使用Visual Studio调试它,我可以阅读"结果视图;展开结果视图将枚举 IEnumerable"

问题:

1.- 读取这些节点的最佳方式是什么?

2.- 我编写了下一个代码,但没有得到预期的结果。我两次得到相同的结果。(ResultsPartRel.nodeList 包含 2 个节点)

         List<string> childrenName = new List<string>();
         foreach (XmlElement node in ResultsPartRel.nodeList)
         {
             string nameChildren = node.SelectSingleNode("//related_id/Item/keyed_name").InnerText;
             childrenName.Add(nameChildren);
         }

提前谢谢你。

编辑

<related_id>
  <Item>
    <classification>Component</classification>
    <id></id>
    <keyed_name>glass</keyed_name> <!-- I want to get this InnerText -->
    </Item>
</related_id>
<source_id>968C45A47942454DA9B34245A9F72A8C</source_id>
<itemtype>5E9C5A12CC58413A8670CF4003C57848</itemtype>

如何阅读XPathNodelist

好吧,我们确实需要查看 XML 示例以及要提取哪些数据的口头解释。目前,您执行一个node.SelectSingleNode(...),因此看起来好像您想选择相对于node的路径,但随后您使用以 // 开头的绝对路径,这就是为什么您会两次获得相同的结果。

所以你想要node.SelectSingleNode(".//related_id/Item/keyed_name")甚至node.SelectSingleNode("related_id/Item/keyed_name"),这取决于你拥有的XML。

你可以得到第一个元素。(使用"//"表示搜索所有以下标签,因此您可能会获得更多结果)。当你想要第一个元素时,写"//related_id/Item/keyed_name*1*"。

或者您可以编写确切的路径。(这是最安全的方法)为了方便自己,有一个Firefox扩展xPath Checker在Firefox中加载文档,而不是右键单击元素并显示Xpath。然后你会得到一个确切的路径。