如何阅读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>
好吧,我们确实需要查看 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。然后你会得到一个确切的路径。