如果您有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列表。
答案 0 :(得分:1)
我粗略的回答是,除非你有一个非常大的文件或一套文件,否则表现并不重要。
在这种情况下,您可能希望使用SAX,并且在任何情况下,您只需要遍历文档一次,而不是将整个内容保存在内存中。因此,您将在文档中流式传输,停在每个a
元素处,并根据其类型将其附加到list1或list2。