我有以下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("??????");
发布于 2010-11-01 21: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表达式对您有效,那么它已经足够详细了。
发布于 2010-11-01 21:07:00
/div[@class='top']/p[.='Blah.']/following-sibling::node()
或
/div[@class='top']/node()[not(self::p)]
https://stackoverflow.com/questions/4072965
复制