XmlDocument - 如何通过使用XPath进行过滤来获取节点

时间:2011-05-23 14:59:41

标签: c# xpath xmldocument

如果您有XML文档,并且需要根据某些属性值(数量为4)找到某些节点,哪一个是正确的方法(就性能而言): -

a)过滤XML文档(使用XPath)以获取与任何属性值匹配的节点列表,然后遍历已过滤的节点列表,以使用If-else获取具有特定属性值的节点。 / p>

b)分别为每个属性值过滤XML文档(带XPath)。

<Nodes>
  <a class="myclass" type="type1">some text</a>
  <a class="myclass" type="type2">some text</a>
  <img src = "myGraphic.jpg?id={Guid}"/>
</Nodes>

我正在使用下面的XPath(可能不正确: - ))

"//A[@class] | //a[@class] | //IMG[@src] | //img[@src]"

目标是获取所有具有type =“type1”的单独列表,单独的type =“type2”列表以及img标记中单独的id列表。

1 个答案:

答案 0 :(得分:1)

我粗略的回答是,除非你有一个非常大的文件或一套文件,否则表现并不重要。

在这种情况下,您可能希望使用SAX,并且在任何情况下,您只需要遍历文档一次,而不是将整个内容保存在内存中。因此,您将在文档中流式传输,停在每个a元素处,并根据其类型将其附加到list1或list2。