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