我有以下HTML:
<div class="top">
<p>Blah.</p>
I want <em>this</em> text.
</div>
提取字符串“
I want <em>this</em> text.
”的XPath表示法是什么?编辑:我不一定要使用单个XPath表达式来提取字符串。选择多个节点,并对其进行迭代以生成句子,也将非常有用。
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(myHtml);
doc.DocumentNode.SelectSingleNode("??????");
最佳答案
您要提取什么,节点或字符串?
如果需要节点,"I want <em>this</em> text."
是XML片段,它由两个文本节点的顶层和一个<em>
元素组成,该元素具有一个文本节点子级。由于它在顶层具有多个节点,因此您需要使用SelectNodes("xpath expression a la @Alejandro")
而不是SelectSingleNode()
来提取它们。
如果需要一个字符串,则再次需要使用SelectNodes();。然后遍历所选节点并连接每个节点的externalHTML。有关类似内容的一个很好的示例,请参见here。
另外,从您的示例中还不清楚一点,通常XPath表达式将为您提供所需的内容。例如。您是否想要在<p>...</p>
下的初始<div class="top">
之后的所有内容?还是您想要除所有<div>
元素之外的<p>
下的所有文本?也许还有其他东西?当然,如果@Alejandro的XPath表达式对您有用,那么它已经足够详细地指定了。
关于c# - 使用HtmlAgilityPack从节点获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072965/