gpt4 book ai didi

java - XPath:如何从一个 XHTML 节点收集多个文本片段?

转载 作者:行者123 更新时间:2023-11-29 05:10:38 25 4
gpt4 key购买 nike

我正在尝试使用 XPath 从 XHTML 页面中的节点中提取文本,但我无法收集给定节点下的所有文本。

问题是,一个节点(参见下面示例中的 p 元素)可以有多个子节点(示例中例如“b”和“em”)和多个散布的文本片段(“aaaa” ,“bbbb”和“cccc”)。但是,我的 XPath 表达式“p/text()”仅返回第一个文本“aaaa”,而我需要直接在 p 节点下收集所有文本片段,即我想获得“aaaabbbbbcccc”(但不是 foo 和酒吧)。我如何教 XPath 收集所有文本并将它们作为一个连接的字符串返回?

...
<p>
aaaa
<b>foo</b>
bbbb
<em>bar</em>
cccc
</p>
...

或者:获取所有文本片段列表的 XPath 表达式是什么,以便我可以在我的代码中以编程方式连接它们?

最佳答案

您的 XPath 表达式已经返回p 元素的所有 直接子元素(如果它们是文本节点)。只是您的 XPath 引擎或库只返回第一个结果。

要证明这是真的,请使用不同的引擎运行相同的 XPath 表达式,例如在 http://xpath.online-toolz.com/tools/xpath-editor.php 上.在那里,使用

<p>
aaaa
<b>foo</b>
bbbb
<em>bar</em>
cccc
</p>

作为输入,//p/text()作为路径表达式产生(各个结果由--------分隔):

[WHITESPACE-ONLY LINE]
aaaa
-----------------------
bbbb
-----------------------
cccc
[WHITESPACE-ONLY LINE]

如果您不介意 p 的子项中的文本也被输出,您可以使用

string(//p)

这会产生

[WHITESPACE-ONLY LINE]
aaaa
foo
bbbb
bar
cccc
[WHITESPACE-ONLY LINE]

要准确获得您请求的输出,您需要提供更多信息(请参阅您的问题的评论)。

关于java - XPath:如何从一个 XHTML 节点收集多个文本片段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com