我需要从html代码(HtmlDocument或HtmlNodes列表)中提取节点对 .
问题是我需要选择一个节点(来自List或HtmlDocument,无论我选择最佳解决方案)都有一个类属性但根本没有值(见图片) .
另一个(更好的解决方案,我认为)将选择“”节点及其紧随其后的兄弟:: li [1](链接#2),这可能是我将为我的程序的这一部分做的 . 链接#2似乎有点帮助,但我不知道如何以“获取所有节点及其第一个后续兄弟”的方式使用它 .
我想要两件事: - 一些代码来获得“一个节点和一个节点的第一个节点”,我没有使用过XPathes(或者它被称为),所以我不习惯 - 如果它是可能的,一种获得“具有类属性但没有值”的节点的方法
问题是,我将不得不选择带有“无 Value ”类的HtmlNode,我正在寻找一种方法来实现它 . 这个想法(如果它仍然不够清楚)将是这样的:
var r = htmlDoc.DocumentNode.Descendants("li").Where(d => d.Attributes["class"].Value.Equals(NULL)); //I’m not sure about the [enter image description here][1].Value.Equals() ^^’
链接: - How to get next 2 nodes in HTML + HTMLAgilitypack但我以前从未使用过这个(我可以用它来选择“”节点及其紧随其后的节目(不会使用它,太幽灵了)
- select an element next to current element HtmlAgilityPack我正在计划使用这个但是我从来没有使用xpath用于htmldoc(现在查看)
图片:
sample code of what I'd like to extract试图添加2张图片:enter image description here
更新
好的,在洪曹的帮助下,我能够选择
<li class>
节点 .
现在,我想做什么(它非常清楚,甚至对我来说^^所以我将尝试使用一个特定的例子),是选择节点的更多节点,更确切地说是一个特定节点及其直接的第一个兄弟节点 . 我有: <li class="A">...</>
=>第一对 <li class="B">...</>
=>第一对 <li class="A">...</>
=>第二对 <li class="B">...</>
=>第二对
我想最终得到像包含A / B类对的Collection或Array(实际上,我使用的是ac#class,它基本上是A的内容,并且在其中有一个数组,我存储了B类的元素) .
tl;博士:我想要的东西是 public List<Pair> ExtractPairs(HtmlAgilityPack.HtmlDocument htmlDoc){
List<Pair> pairs = new List<>();
foreach (HtmlNode node in htmlDoc.DocumentNode.SelectNodes("//li[@class='A']")) {
Pair pair = new Pair(node,node
这里的第一个兄弟姐妹(这将永远是 <li class="B">
) );
pairs.add(pair);
}
return pairs;
}
1 回答
TBH,我不太明白你的问题但这是我试图回答它 .