合并xml元素属性

问题描述 投票:1回答:1

我有输入xml

<IndexCatalogueRecord SeriesNumber="1" SeriesVolume="3" SeriesPage="594">
<IndexCatalogueID>10305941390</IndexCatalogueID>
<GeneralNote>[Shelved in: B.58]</GeneralNote>
<GeneralNote>[Shelved in: B.458]</GeneralNote>
<GeneralNote>[Shelved in: B.20]</GeneralNote>
<Language>fr</Language>
</IndexCatalogueRecord>

并且我需要一种解决方案,以将GeneralNote元素属性组合在一起并用逗号定界符分隔,以便变得]]

<IndexCatalogueRecord SeriesNumber="1" SeriesVolume="3" SeriesPage="594">
<IndexCatalogueID>10305941390</IndexCatalogueID>
<GeneralNote>[Shelved in: B.58, B.458, B.20]</GeneralNote>
<Language>fr</Language>
</IndexCatalogueRecord>

[我的方法是让xmlstarlet查询元素的属性值,然后通过管道将其传递给grep或awk。我可以使用xmlstarlet从GeneralNote轻松获取属性的值

 xmlstarlet sel -t -m "//GeneralNote" -v . -n test.xml

但是当我尝试将控制台输出传递给grep以使其去除匹配字符串“ [Shelved in:”和“]”时,我遇到了一些麻烦,请告诉我是否有更优雅的解决方案。在此先感谢

我有输入xml 10305941390

xml xml-parsing xmlstarlet
1个回答
2
投票

一种可能的方法是使用两个嵌套的xmlstarlet命令(请注意表达式中文件名的两次出现):

© www.soinside.com 2019 - 2024. All rights reserved.