c# - 使用HtmlAgilityPack从节点获取文本

标签 c# xpath html-agility-pack

我有以下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/

相关文章:

c# - Quartz.NET/CaSTLe Windsor Integration XmlInterpreter异常

python - 我如何在 python lxml、XPath 中使用正则表达式

python - Chropath for selenium xpath 不起作用?

java - 如何获取没有html标签selenium的文本

c# - 重新 :test() XPath to HtmlAgilityPack (get all p tags with matched regex internal)

c# - 如何删除 C# 字符串中的空格?

c# - 调试进程的转储代码

c# - 默认构造函数在不需要时不必要地初始化依赖项

c# - src等属性如何防范XSS攻击?

c# - Agility Pack 选择 SingleNode @id 包含或 @id 类似