转换仅包含特定标记的xml

时间:2015-07-14 09:32:02

标签: xml linux bash awk sed

我有这个xml结构,我想将这个xml转换为另一个xml,但只有一些字段。我怎么能直接用xmllint或类似的工具呢?我知道我可以使用一些php库来解析xml,但是如果可能的话我想避免这种情况。

resources :relationships

为:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <Entities>
       <Ent_ID>1</Ent_ID>
       <Name>John</Name>
       <Age>15</Age>
    </Entities>
    <Entities>
       <Ent_ID>2</Ent_ID>
       <Name>Pedro</Name>
       <Age>20</Age>
    </Entities>
</data>

1 个答案:

答案 0 :(得分:5)

我会使用xmlstarlet

xmlstarlet ed -d '/data/Entities/*[not(self::Name)]' filename.xml

xmlstarlet ed -d xpath删除符合XPath表达式的输入XML中的所有节点,在这种情况下,它描述了/data/Entities节点不是Name个节点的所有子节点。