如何使用 Xpath 嵌套 div?
How to get nested div using Xpath?
我需要得到一个带有 html 文档的嵌套 div,例如:
<div id="maindiv>
<div id='firstdiv'>
</div>
<div id="otherid">
<div id="anotherdiv"><div id="divid"></div>
</div>
</div>
我需要获取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");
这很好用。但是,是否有更好的方法通过使用 XPath 获得所需的 div?
如果你想使用 x 路径提取子元素,你可以使用“/”,但如果你不知道元素有多深,你也可以通过“/*/”或使用“//”提取孙子元素。
使用 [@id='<id_you_are_looking_for']
按 id 提取元素(与 class 提取的方法相同)
所以,如果您不知道 "deep" 是您的 div,请使用
//div[@id='anotherdiv']
甚至
//*[@id='anotherdiv']
提取具有所选 ID 的任何元素。
id 应该是唯一的,所以它应该足够了,但是如果你想确保另一个 div 在 main div 中,你可以使用
//div[@id='maindiv']//div[@id='anotherdiv]
我需要得到一个带有 html 文档的嵌套 div,例如:
<div id="maindiv>
<div id='firstdiv'>
</div>
<div id="otherid">
<div id="anotherdiv"><div id="divid"></div>
</div>
</div>
我需要获取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");
这很好用。但是,是否有更好的方法通过使用 XPath 获得所需的 div?
如果你想使用 x 路径提取子元素,你可以使用“/”,但如果你不知道元素有多深,你也可以通过“/*/”或使用“//”提取孙子元素。
使用 [@id='<id_you_are_looking_for']
按 id 提取元素(与 class 提取的方法相同)
所以,如果您不知道 "deep" 是您的 div,请使用
//div[@id='anotherdiv']
甚至
//*[@id='anotherdiv']
提取具有所选 ID 的任何元素。
id 应该是唯一的,所以它应该足够了,但是如果你想确保另一个 div 在 main div 中,你可以使用
//div[@id='maindiv']//div[@id='anotherdiv]