【发布时间】:2019-11-15 15:43:51
【问题描述】:
我有以下 XML 文件:
<d:entry id="a" d:title="a">
<d:index d:value="a" d:title="a"/>
<d:index d:value="b" d:title="b"/>
<d:index d:value="a" d:title="a"/>
<d:index d:value="c" d:title="c"/>
<d:index d:value="b" d:title="b"/>
<d:index d:value="a" d:title="a"/>
<d:index d:value="b" d:title="b"/>
<div>This is the content for entry.</div>
</d:entry>
<d:entry id="b" d:title="b">
<d:index d:value="a" d:title="a"/>
<d:index d:value="b" d:title="b"/>
<div>This is the content for entry.</div>
</d:entry>
(为便于阅读添加了空格。)
<d:index 有一些重复项,我需要删除所有重复项,只保留一个唯一的<d:index。想要的效果是这样的:
<d:entry id="a" d:title="a">
<d:index d:value="a" d:title="a"/>
<d:index d:value="b" d:title="b"/>
<d:index d:value="c" d:title="c"/>
<div>This is the content for entry.</div>
</d:entry>
<d:entry id="b" d:title="b">
<d:index d:value="a" d:title="a"/>
<d:index d:value="b" d:title="b"/>
<div>This is the content for entry.</div>
</d:entry>
为此,我可以在某些编辑器中进行正则表达式替换,但需要多次完成,我想知道 Perl 是否有一些方法可以一次性完成。
【问题讨论】:
-
metacpan.org/pod/Catmandu::Fix 可能可以做到,但我不知道如何随手。很抱歉!
-
这看起来很有趣。浏览了一会儿,我没有找到正确的 util 方法来删除重复索引。
-
您使用的是什么解析器?到目前为止你的代码是什么?
-
我没有使用任何解析器。我认为只要 perl + regex 就可以了……抱歉,我还是 Perl 新手,不熟悉 Perl 中的一些库。
标签: xml perl command-line duplicates