假设我有一个如下所示的XML:
<a>
<b>
<![CDATA[some text]]>
<c>xxx</c>
<d>yyy</d>
</b>
</a>
我无法找到获得“某些文字”的方法。有什么想法吗?
如果我使用“a / b”,它还会返回xxx和yyy 如果我使用“a / b / text()”则不返回任何内容
答案 0 :(得分:3)
您实际上无法选择CDATA部分:CDATA只是告诉解析器避免转义特殊字符的一种方式,并且您的输入文档看起来与XPath完全相同:
<a>
<b>
some text
<c>xxx</c>
<d>yyy</d>
</b>
</a>
(话虽如此,如果你使用DOM,那么一些DOM XPath引擎无法正确实现规范,并将CDATA内容视为与CDATA部分之外的文本单独的文本节点。)
XPath表达式a / b / text()应该选择三个文本节点,其中第一个包含“some text”以及周围的空格。
答案 1 :(得分:0)
使用XPath数据模型,路径/a/b/text()[1]
应选择具有字符串值
一些文字
这是一个换行符,一些空格,文本some text
后面跟一个换行符和一些空格。