遍历xml并将元素值复制到xmlstarlet中的另一个

问题描述 投票:0回答:2

我有两个 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
2个回答
0
投票

来了^^

$ 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

-1
投票

我会尽量在这里解释更多。我想提取如下所述的值。

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>
© www.soinside.com 2019 - 2024. All rights reserved.