xQuery,如何从带有孩子的节点获取文本?

Posted

技术标签:

【中文标题】xQuery,如何从带有孩子的节点获取文本?【英文标题】:xQuery, how to get text from node with childs? 【发布时间】:2012-07-25 13:13:30 【问题描述】:

这一行:

//div[@id="transactions"]/p

给出这个输出(来自我试图获取的 html 内容):

我怎样才能使这个查询返回这样的字符串(如果每个<p> 在它自己的行中的内容):

contentOfP1
contentOfP2
contentOfP3
...

请注意,每个 p 都有子节点(<strong><a>)和没有标签的文本。当尝试从特定的<p> 检索所有文本时,它会给出:

【问题讨论】:

【参考方案1】:

使用

//div[@id="transactions"]/p/concat(string(.), '
')

或者,如果需要空间标准化的“每个段落的内容”——如注释中所示,请使用:

//div[@id="transactions"]/p/concat(normalize-space(.), '
')

【讨论】:

你的回答差点让我哭了:(我浪费了好几个小时寻找答案,就这么简单!非常感谢 好吧,它不起作用。但感谢你,我终于得到了我想要的 for $p in ($doc//div[@id="transactions"]/p) return concat(normalize-space(string($p)), '
') :) @Batis610:“它不起作用”是什么意思?我很高兴这个答案对你有用。请您接受它(通过单击答案旁边的复选标记)吗? 它只是没有给我预期的输出。但确实你的回答有很大帮助。我是新来的,如果我之前没有接受答案,我深表歉意:) @Batis610:不客气。请注意,for 子句不是必需的——我认为更新答案中的第二个表达式会产生您可能想要的内容。

以上是关于xQuery,如何从带有孩子的节点获取文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cocos2d v3 中获取一个类型的孩子

XQuery 如何使用 WHERE 查询获取整个 xml 文档

从 firebase (Swift) 获取子节点

XPath / XQuery:在节点中查找文本,但忽略特定后代元素的内容

如何使用 XQuery 获取 XML 文件中的子节点数

Android Firebase如何获取包含列表的孩子