HtmlAgilityPack HtmlDocument CreateNavigator Select XPath 语句不起作用
HtmlAgilityPack HtmlDocument CreateNavigator Select XPath statement not working
假设我有这个 XML
<root>
<myEntity> // list 1
<name>Test 1</name>
<entityNew> // list 2
<newName/>
<newName/>
</entityNew>
</myEntity>
<myEntity>
<name>Test 2</name>
<entityNew>
<newName/>
<newName/>
</entityNew>
</myEntity>
</root>
我要获取entityNew列表。
我试的是这个
//myEntity[1]/entityNew
但它不起作用,与 //myEntity[position()=1]/entityNew
或类似 //myEntity[1]//entityNew
相同
但是当我在在线 XPath 测试仪中尝试它时,它起作用了,这是我使用的站点 http://www.freeformatter.com/xpath-tester.html
经过一番调整后,我注意到 HtmlAgilityPack 将节点名称全部视为小写,而 XPath 区分大小写,因此您尝试的查询返回 null。
我尝试了以下示例应用程序(注意所有节点名称均为小写):
string xml = File.ReadAllText("XMLFile1.xml");
var doc = new HtmlDocument();
doc.LoadHtml(xml);
var navigator = doc.CreateNavigator();
var iterator = navigator.Select("root//myentity[1]/entitynew");
iterator.MoveNext();
Console.WriteLine(iterator.Current.OuterXml);
输出是这样的:
<entitynew> // list 2
<newname />
<newname />
</entitynew>
假设我有这个 XML
<root>
<myEntity> // list 1
<name>Test 1</name>
<entityNew> // list 2
<newName/>
<newName/>
</entityNew>
</myEntity>
<myEntity>
<name>Test 2</name>
<entityNew>
<newName/>
<newName/>
</entityNew>
</myEntity>
</root>
我要获取entityNew列表。
我试的是这个
//myEntity[1]/entityNew
但它不起作用,与 //myEntity[position()=1]/entityNew
或类似 //myEntity[1]//entityNew
但是当我在在线 XPath 测试仪中尝试它时,它起作用了,这是我使用的站点 http://www.freeformatter.com/xpath-tester.html
经过一番调整后,我注意到 HtmlAgilityPack 将节点名称全部视为小写,而 XPath 区分大小写,因此您尝试的查询返回 null。
我尝试了以下示例应用程序(注意所有节点名称均为小写):
string xml = File.ReadAllText("XMLFile1.xml");
var doc = new HtmlDocument();
doc.LoadHtml(xml);
var navigator = doc.CreateNavigator();
var iterator = navigator.Select("root//myentity[1]/entitynew");
iterator.MoveNext();
Console.WriteLine(iterator.Current.OuterXml);
输出是这样的:
<entitynew> // list 2
<newname />
<newname />
</entitynew>