0

在 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>
4

2 回答 2

1

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

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

于 2012-05-10T10:42:49.490 回答
0

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

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

于 2012-05-10T10:26:59.027 回答