所以,假设我有一个html文档看起来像这样:
<h1>Segment1</h1>
<p>Segment1Text</p>
<p>Segment1MoreText</p>
<ul><li>Segment1BulletText</li></ul>
<h1>Segment2</h1>
<p>Segment2Text</p>
<p>Segment2MoreText</p>
<ul><li>Segment2BulletText</li></ul>
<h1>Segment3</h1>
<p>Segment3Text</p>
<p>Segment3MoreText</p>
<ul><li>Segment3BulletText</li></ul>
使用HTMLAgilityPack我需要创建一个函数,根据我传入此函数的分割模式将html分割为HTMLNodeCollections。
这个函数需要是可扩展的,因为我传入的html段总是不同的,因此我总是需要为它提供不同的模式以便分割html。
答案 0 :(得分:0)
.Descendants()
是你的朋友(如果你不想使用XPATH)。
关于第一个问题:只需使用Descendants("h1")
。
第二个问题:这样的事情会起作用doc.DocumentNode.Descendants("h1").Where(p => p.NextSibling.NextSibling.Name === "p");
//我在这里做了一个技巧,因为中间总是有一个文本节点。这可能不是最好的解决方案,只是为了展示想法。
第3个问题:与第2个问题相同,只需再获得1个NextSibling()
。