我试图从div/p页面上第一次出现的文本,只有第一个p.<p>包含其他标记(<b>,<a href>),<p>返回的文本在任何其他标记处停止.有没有办法让这一行返回<p>和</ p>之间的所有文本,甚至是嵌入式标签之间?
puts doc.xpath('html/body/div/p[1]/text()').first
Run Code Online (Sandbox Code Playgroud)
用途:
string((//div/p)[1])
Run Code Online (Sandbox Code Playgroud)
在计算此XPath表达式时,结果是p文档中第一个作为子项的子句的字符串值div.
根据定义,元素的字符串值是其所有文本节点后代的串联(按文档顺序).
因此,您可以获得由此p元素生根的子树中的所有文本,并跳过任何其他节点(元素,注释,PI).
基于XSLT的验证:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select="string(p)"/>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
当此转换应用于以下XML文档时(没有提供!):
<p>
Hello <b>
<a href="http://www.w3.org/TR/2008/REC-xml-20081126/">XML</a>
World!</b>
</p>
Run Code Online (Sandbox Code Playgroud)
输出评估的XPath表达式的结果:
Hello XML
World!
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
435 次 |
| 最近记录: |