我有这个 HTML/XML:
\t\t\t\t\t \r\n\t\t
<a href="/test.aspx">
<span class=test>
<b>blabla</b>
</span>
</a>
<br/>
this is the text I want
<br/>
<span class="test">
<b>code: 123</b>
</span>
<br/>
<span class="test"></span>
\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t
在 C#4 中,我使用 HtmlAgilityPack 库通过 XPath 选择节点并获取 InnerText 属性。这将获取节点内的所有文本。我怎样才能只得到文本“这是我想要的文本”?
/text()
只返回 \t\t\t\t\t\r\n\t\t
最佳答案
/div/text()
根据给出的示例,此 XPath 将为您提供 div 元素下的所有文本节点,在本例中为 test2。
如果您能详细说明这个问题,我们可能会更好地帮助您。 Div 包含 3 个子元素:一个 span 元素、一个文本节点和一个 b 元素。 span 和 b 每个都有一个文本节点子节点。使用 XPath,您可以仅选择元素 (/div/*)、仅选择文本节点 (/div/text()) 或所有节点类型 (/div/node())。
编辑:/text() 只会返回根级文本节点。在这种情况下,我希望它返回一个包含 3 个文本节点的节点列表:
\t\t\t\t\t \r\n\t\t
this is the text I want
\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t
您是否可能只选择结果节点列表中的第一个节点?
有一些格式良好的问题,例如您的 <br>
应该是 <br/>
.
关于c# - XPath 选择内文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3872901/