首页 > 解决方案 > 如何使用 XMLStarlet / Xpath 选择里面的文本

但排除一些内在

问题描述

我有这样的html文件。基本上它的 div 包含具有一个内部跨度的文本,其余文本部分具有相当任意的格式。

<html>
<div>
<span class="c1">Text1</span><br/>
Text4<br/>
Text5
</div>
<div>
<span class="c1">TextA</span><a href="...">TextD</a>
</div>
</html>

只选择/打印 span 内的特定文本很简单 xml sel -t -m "/html/div" -v "span[@class='c1']" -n

但是,我不知道如何选择/打印范围内但范围之外的其余文本,而不管任何其他标签(如<br/>. 该功能text()无法按我的预期工作。

xml sel -t -m "/html/div" -v "concat(span[@class='c1'],'|',text(),'$')" -n<br/>将剪切标签后面的文本。

我怎么能得到类似的东西

Text1|
Text4
Text5$
TextA|TextD$

标签: xmlxpathtextxmlstarlet

解决方案



推荐阅读