我已经有了一个算法来检索Xml的XPath表达式:
但是,它不完美,不安全,并且需要大量额外的装饰来格式化获得的表达式。 (有关所需格式的示例,我的意思是:Get avaliable XPaths and its element names using HtmlAgilityPack)
然后,我最近发现了 XPathNavigator 类,并以任何方式改进了当前代码的可靠性,我想知道是否使用XPathNavigator
类我可以检索Xml文档的所有XPath exprressions,因为这样我的算法可以基于.Net框架逻辑及其规则的效率而不是单个程序员的不完美逻辑。
我在C#或Vb.Net中搜索解决方案。
这就是我的尝试:
Dim xDoc As XDocument =
<?xml version="1.0"?>
<Document>
<Tests>
<Test>
<Name>A</Name>
<Value>0.01</Value>
<Result>Pass</Result>
</Test>
<Test>
<Name>A</Name>
<Value>0.02</Value>
<Result>Pass</Result>
</Test>
<Test>
<Name>B</Name>
<Value>1.01</Value>
<Result>Fail</Result>
</Test>
</Tests>
</Document>
Dim ms As New MemoryStream
xDoc.Save(ms, SaveOptions.None)
ms.Seek(0, SeekOrigin.Begin)
Dim xpathDoc As New XPathDocument(ms)
Dim xpathNavigator As XPathNavigator = xpathDoc.CreateNavigator
Dim nodes As XPathNodeIterator = xpathNavigator.Select(".//*")
For Each item As XPathNavigator In nodes
Console.WriteLine(item.Name)
Next
使用该代码我只能设法得到这种(不需要的)输出:
Document
Tests
Test
Name
Value
Result
Test
Name
Value
Result
Test
Name
Value
Result
Test
Name
Value
Result
是否可以使用 XPathNavigator 类提取所有XPath表达式?
答案 0 :(得分:1)
不,那是不可能的。使用XPath选择特定节点的方法有很多种。你可能会对“规范”的概念有所了解。任何给定节点的XPath,但即使这听起来很难指定,XPathNavigator
也没有内置的概念来帮助你。