如何解决使用 xmllint 合并不同数量的 Xpath 节点
我有一个包含如下数据的文件:
<root>
<x>
<y lang="en">
<z>1</z>
<z>2</z>
<z>3</z>
<z>4</z>
<t>5</t>
</y>
</x>
<x>
<y lang="en">
<z>a</z>
<z>b</z>
<t>c</t>
</y>
</x>
</root>
我想按如下方式打印它们
1 2 3 4 5
a b c
第一个有 4z 和 1t,第二个有 2z 和 1t。由于 xargs 不是静态的,我无法按我的意愿打印它们。我尝试了一个脚本,如下 $f 作为文件:
xmllint --xpath "//root/x/y/z/node() | //root/x/y/t/node()" $f | xargs -n2
我得到的结果是:
1 2
3 4
5个
b c
如果您有任何想法,我会很高兴。
解决方法
试试:
xidel file.xml -e '//x/string-join(./y/*/.," ")'
我用你的 xml 得到的输出:
1 2 3 4 5
a b c
,
试试这个
xmllint --xpath "//x/y/*/node()" $f | xargs -n2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。