xml - 如何仅从 xml 文件中提取特定部分并合并它们?
问题描述
我有许多想要合并到一个文件中的 xml 文件。我不想从根合并它们,而是从其中一个孩子合并它们。如何使用 grep/sed/awk 语句继续它?
XML 1:
<root>
<version>AB</version>
<Data>
<Title>MyTitle</Title>
<SubTitle>Mysub</SubTitle>
</Data>
<file author="JXJX" name="MyFile1">
<desc>File1</desc>
<field>Random Field</field>
</file>
<root>
XML 2:
<root>
<version>AB</version>
<Data>
<Title>MyTitle 2</Title>
<SubTitle>Mysub 2</SubTitle>
</Data>
<file author="HIGH" name="MyFile2">
<desc>File2</desc>
<field>Random Field</field>
</file>
<root>
我想要以下 XML 文件:
<root>
<file author="JXJX" name="MyFile1">
<desc>File1</desc>
<field>Random Field</field>
</file>
<file author="HIGH" name="MyFile2">
<desc>File2</desc>
<field>Random Field</field>
</file>
</root>
解决方案
请不要使用 regex 解析 XML,而是使用适当的解析器,如xidel:
$ xidel -se '
element root {
doc("1.xml")//file,
doc("2.xml")//file
}
' --output-node-format=xml --output-node-indent
<root>
<file author="JXJX" name="MyFile1">
<desc>File1</desc>
<field>Random Field</field>
</file>
<file author="HIGH" name="MyFile2">
<desc>File2</desc>
<field>Random Field</field>
</file>
</root>
推荐阅读
- sql - SQL 数据库中非规范化的实际示例?
- firebase - React-native firebase 后台深度链接应用程序
- c - c中的共享内存,关于输出的问题
- node.js - 使用expressjs,有没有办法使用猛犸象不使用路径?
- c# - 查询对象列表
- c - 如果传递的函数也将函数作为参数,我如何将函数作为参数传递给 C 中的函数?
- javascript - 从数组中查找父母和孩子
- azure - Microsoft Graph REST API 无法写入邮件
- javascript - JS 代码不适用于从 Django 模型中检索到的所有数据
- ios - Swift - 在 UITableViewCell 中添加 buttonTapped 函数