提取节点路径以匹配“InnerText”






1.38/5 (9投票s)
2006年10月4日
1分钟阅读

24786

108
当您需要查找节点精确匹配的InnerText的节点路径时,这很有用。
引言
使用此XPathFinder,您将能够找到您想要查找的InnerText的XPath。
这是一种非常简单的逻辑,不需要.NET方面的专业知识。
您想了解什么?
1) .NET
2) XML
3) XPath
这到底是什么?
以以下示例为例
<DATA><PARENT>
<CHILD>Value</CHILD>
<CHILD256>Value2</CHILD256>
<XCHILD>Value</XCHILD> <PARENT2>Value
<CHILD2>V</CHILD2>
<CHILD2>ValuE</CHILD2>
<CHILD21>Value</CHILD21>
</PARENT2></PARENT>
</DATA>
您想找到所有InnerText为“Value”的元素节点。
可能的节点是
1) DATA/PARENT/CHILD
2) DATA/PARENT/XCHILD
3) DATA/PARENT/PARENT2
4) DATA/PARENT/PARENT2/CHILD21
此实用程序可用于查找这些XPath。
改进
您可能希望提取带有索引的节点路径。
例如
<DATA><PARENT>
<CHILD>Value</CHILD>
<CHILD>Value</CHILD></PARENT>
</DATA>
您想找到所有InnerText为“Value”的元素节点。
可能的节点为
1) DATA[1]/PARENT[1]/CHILD[1]
2) DATA[1]/PARENT[1]/CHILD[2]
使用了什么?
为了遍历XML文档并构建XPath,使用了XPathNavigator。
我使用了Stack来维护节点名称。在找到值时,每个节点名称都会被插入到Stack中。如果找到匹配的值,则会弹出相应的节点名称并构建XPath,然后将其插入到Queue中。使用一个递归函数进入元素节点。
需要改进的地方
由于使用了递归函数和Stack,此逻辑可能需要更长的时间来处理大型XML文档。我正在努力寻找性能更高效的逻辑。