首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用HtmlAgilityPack从节点获取文本

使用HtmlAgilityPack从节点获取文本
EN

Stack Overflow用户
提问于 2010-11-02 04:57:03
回答 2查看 2.9K关注 0票数 1

我有以下HTML:

代码语言:javascript
运行
复制
<div class="top">
    <p>Blah.</p>
    I want <em>this</em> text.
</div>

提取字符串"I want <em>this</em> text.“的XPath表示法是什么?编辑:我不一定需要单个XPath表达式来提取字符串。选择多个节点,并对它们进行迭代以生成句子,也会很棒。

代码语言:javascript
运行
复制
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(myHtml);
doc.DocumentNode.SelectSingleNode("??????");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-02 05:49:58

你想提取什么,节点还是字符串?

如果需要节点,"I want <em>this</em> text."是一个XML片段,它位于两个文本节点和一个<em>元素的顶层,该元素有一个文本节点的子节点。因为它在顶层有多个节点,所以您需要使用SelectNodes("xpath expression a la @Alejandro")而不是SelectSingleNode()来提取它们。

如果需要字符串,同样需要使用SelectNodes();,然后遍历选定的节点并连接每个节点的outerHTML。有关类似内容的很好的示例,请参见here

此外,从您的示例中还不清楚XPath表达式通常会给您提供您想要的东西。例如,你想要<div class="top">下初始<p>...</p>之后的所有东西吗?或者,是否希望除所有<p>元素之外的所有文本都在<div>下?或者是别的什么?当然,如果@Alejandro的XPath表达式对您有效,那么它已经足够详细了。

票数 1
EN

Stack Overflow用户

发布于 2010-11-02 05:07:00

代码语言:javascript
运行
复制
/div[@class='top']/p[.='Blah.']/following-sibling::node()

代码语言:javascript
运行
复制
/div[@class='top']/node()[not(self::p)]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4072965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档