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

本文关键字:过滤 获取 节点 XPath 何通过 XmlDocment | 更新日期: 2023-09-27 17:57:15

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

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

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 列表。

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

我的粗略回答是,除非您有一个非常大的文档或一组文档,否则性能并不重要。

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