c# - 如何使用Xpath获取嵌套div?

标签 c# html 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>

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

目前我正在做:

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

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

var another = doc.GetElementbyId("anotherdiv");

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

最佳答案

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

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

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

//div[@id='anotherdiv']

甚至

//*[@id='anotherdiv']

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

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

//div[@id='maindiv']//div[@id='anotherdiv]

关于c# - 如何使用Xpath获取嵌套div?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39465184/

相关文章:

c# - automapper.extensions.microsoft.dependencyinjection 和 automapper nuget 包有什么区别?

html - 背景属性不工作 CSS3

java - 自动完成文本框第一个选项选择

javascript - html5 canvas clearRect 无法清除 android froyo 浏览器中的图像

xslt - XSLT 2.0如何在输出的tokenize()中测试position()

xslt - Sorted exsl :node-set. 按位置返回节点

C# - 返回后在 catch block 中重新抛出异常

c# - 如何避免ef以上业务逻辑类中的重复代码?

c# - 分割数组的一个元素

javascript - 在更改时在两个下拉菜单之间传递值。无需点击即可更新