HtmlAgilityPack HtmlDocument CreateNavigator选择XPath语句不起作用

本文关键字:语句 不起作用 XPath 选择 HtmlDocument CreateNavigator HtmlAgilityPack | 更新日期: 2023-09-27 18:20:41

假设我有这个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>

我想要实体新列表。

我试过的是这个

//myEntity[1]/entityNew,但它不工作,与//myEntity[position()=1]/entityNew或类似的//myEntity[1]//entityNew

但当我在一个在线XPath测试程序中尝试它时,它成功了,这就是我使用的网站http://www.freeformatter.com/xpath-tester.html

HtmlAgilityPack HtmlDocument CreateNavigator选择XPath语句不起作用

经过一番修改,我注意到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>