如何使用Xpath获取嵌套div?

Iva*_*ono 3 html c# xpath html-agility-pack

我需要获取一个带有 html 文档的嵌套 div,例如:

<div id="maindiv>
    <div id='firstdiv'>
    </div>  
    <div id="otherid">
        <div id="anotherdiv"><div id="divid"></div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我需要获取 的内容anotherdiv。我不知道maindiv主文档中的anotherdiv深度以及maindiv.

目前我正在做:

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(content);

var main = doc.GetElementbyId("maindiv").InnerHtml;
doc.LoadHtml(main);

var another = doc.GetElementbyId("anotherdiv");
Run Code Online (Sandbox Code Playgroud)

这很好用。但是有没有更好的方法使用 XPath 来获取所需的 div 呢?

小智 5

如果你想使用 x 路径提取子元素,你可以使用“/”,但你也可以通过“/*/”提取孙元素,或者如果你不知道元素有多深,则使用“//”。

通过 id 使用提取元素[@id='<id_you_are_looking_for'](与按类提取的方式相同)

所以如果你不知道你的 div 有多“深”,就使用

//div[@id='anotherdiv']
Run Code Online (Sandbox Code Playgroud)

甚至

//*[@id='anotherdiv']
Run Code Online (Sandbox Code Playgroud)

提取具有选定 id 的任何元素。

id 应该是唯一的,所以它应该足够了,但如果你想确保另一个 div 位于主 div 中,你可以使用

//div[@id='maindiv']//div[@id='anotherdiv]
Run Code Online (Sandbox Code Playgroud)