c# - XPath 选择内文

标签 c# html text xpath

我有这个 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/

相关文章:

c# - SignalR 将数据服务器推送到客户端

c# - .NET Volatile.读/写和互锁范围

javascript - 使用 jquery 显示从 xml 到 html 的新行

html - 如何始终将页脚保留在页面底部,尽管屏幕尺寸不同

html - 背景 : url(), 背景图像:url() 不工作

带槽的 C# 多线程

c# - 将锯齿状数组转换为列表

iphone - 如何在 UIImage 中写一些带有特殊字符的文本?

html - 文本转换样式不起作用

javascript - 从上面的链接获取文本 - Jquery