我有两个 xml 文件。我想提取 xml1 中的元素值并将它们分配给 xml2。
xml1:
<?xml version="1.0" encoding="windows-1252"?>
<dataTemplate>
<test>John</test>
<test>Peter</test>
<test>Paul</test>
</dataTemplate>
我想将值导出到 xml2,它看起来像这样:
<?xml version="1.0" encoding="windows-1252"?>
<sec>
<author>John</author>
<author>Peter</author>
<author>Paul</author>
</sec>
我的 xmlstartlet 脚本:
#!/bin/bash
IMPORT=$(xmlstarlet sel -t -v "//dataTemplate/test" xml1.xml)
xmlstarlet ed -L -s "//sec" -t elem -n "author" -v "$LOBCODE" xml2.xml
结果看起来像这样而不是我想要的:
<sec>
<author>John
Peter
Paul</author>
</sec>
来了^^
$ xmlstarlet edit -r '/dataTemplate' -v 'sec' xml1
<?xml version="1.0" encoding="windows-1252"?>
<sec>
<test>John</test>
<test>Peter</test>
<test>Paul</test>
</sec>
所以
$ xmlstarlet edit -r '/dataTemplate' -v 'sec' xml1 | tee xml2
我会尽量在这里解释更多。我想提取如下所述的值。
xml1 中的示例 John 被导出并转换为 xml2 文件中的 John
来自 xml1 的示例 Peter 被导出并转换为 xml2 文件中的 Peter
来自 xml1 的示例 Paul 被导出并转换为 xml2 文件中的 Paul
示例 xml1:
<?xml version="1.0" encoding="windows-1252"?>
<dataTemplate>
<test>John</test>
<test>Peter</test>
<test>Paul</test>
...
</dataTemplate>
<dataTemplate1>
<name>John</name>
<name>Peter</name>
<name>Paul</name>
</dataTemplate1>
</dataTemplate>
已有的xml2已经包含其他元素:
<?xml version="1.0" encoding="windows-1252"?>
**<sec>
<author>John</author>
<author>John</author>
<author>John</author>
</sec>**
<record>
<school>Mary</school>
<school>Mary</school>
<school>Mary</school>
</record>