【问题标题】:Convert xml containing only specific tags转换仅包含特定标签的 xml
【发布时间】:2015-10-02 20:49:33
【问题描述】:

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

<?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>

到:

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <Entities>
       <Name>John</Name>
    </Entities>
    <Entities>
       <Name>Pedro</Name>
    </Entities>
</data>

【问题讨论】:

    标签: xml linux bash awk sed


    【解决方案1】:

    我会使用xmlstarlet:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      相关资源
      最近更新 更多