65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.38/5 (9投票s)

2006年10月4日

1分钟阅读

viewsIcon

24786

downloadIcon

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文档。我正在努力寻找性能更高效的逻辑。

代码下载地址

© . All rights reserved.