xml - 转换仅包含特定标签的 xml

标签 xml linux bash awk sed

我有这个 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>

最佳答案

我会使用xmlstarlet:

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

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

关于xml - 转换仅包含特定标签的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31402856/

相关文章:

linux - 用变量中包含空格的sed替换文本

linux - 在文件中查找 HEX 值并 grep 以下值

php - Google Adwords API 报告实用程序 - PHP - XML 无效?

sql - XSD、XML 到 SQL 导入出现问题 - 此位置不允许文本节点

php - 在数组中搜索并使用它来保存

c# - 如何将从请求生成的 xml 结构转换为 Web 服务

c - linux中时序计算的引用是什么

linux - Linux 内核中用于 AES 错误的加密 api

linux - Shell 在 jarsigner 中传递 keystore 路径参数

string - 如何测试 HTML 文件中是否存在字符串 - Unix 脚本