【发布时间】:2011-05-24 03:58:04
【问题描述】:
如果您有一个 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]"
目标是在 img 标记中获取所有具有 type="type1" 的单独列表、type="type2" 的单独列表和 id 的单独列表。
【问题讨论】:
-
请举例说明您的意思。不清楚为什么不只使用单个 XPath 表达式一次查找所有节点。
-
“为什么你不只使用单个 XPath 表达式” - 这是问题中的 a) 选项。一次获取所有节点后,需要输入 If-else 以获取每种属性值的节点值。这是一个好方法吗。添加了一个示例。
-
@user:慢慢来。它不必是您的真实 XML 的副本。只是显示您对属性值的意思的东西。例如,我不明白你为什么需要 if/else。
-
约翰,添加了一个例子。
-
@user:好的,现在你要匹配哪些 XML 节点?
标签: c# xpath xmldocument