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)), '&#xA;')
:)
@Batis610:“它不起作用”是什么意思?我很高兴这个答案对你有用。请您接受它(通过单击答案旁边的复选标记)吗?
它只是没有给我预期的输出。但确实你的回答有很大帮助。我是新来的,如果我之前没有接受答案,我深表歉意:)
@Batis610:不客气。请注意,for
子句不是必需的——我认为更新答案中的第二个表达式会产生您可能想要的内容。以上是关于xQuery,如何从带有孩子的节点获取文本?的主要内容,如果未能解决你的问题,请参考以下文章
XQuery 如何使用 WHERE 查询获取整个 xml 文档