我有两个文件xml,我需要从第一个xml文件中提取数据并插入到第二个xml文件中。
第一个文件:
<?xml version="1.0" encoding="utf-8"?>
<ITEMS>
<EVENT>
<codpal>8387</codpal>
<programming>ProgramName</programming>
<idCategory>28</idCategory>
<date>2011-07-16 17:00:00</date>
</EVENT>
</ITEMS>
第二档:
<?xml version="1.0" encoding="utf-8"?>
<ITEMS>
<EVENT>
<sign codice="xxxx" pro="xxxxxxxxxxx" id="xxx" data="xxxx xxx xxxx xx" />
</EVENT>
</ITEMS>
任何人都可以帮助我吗?第一个文件改变任何20分钟。我需要创建一个bash脚本来自动导出。
答案 0 :(得分:1)
如果这是一个选项,最好编写一个XSLT来转换它。这样可以避免解析错误/不规则并使其更具可重用性。
答案 1 :(得分:0)
我会剥离html标签和空行,然后将结果放在一个数组中:
values=(`sed 's/<[^>]*>//g' /tmp/xml | sed '/^$/d'`)
echo ${values[0]}
您应该能够轻松获取值并使用echo产生预期的输出。
更新:包含空格的白名字段存在问题。您可以尝试使用此模式逐行阅读:
while read line;
do
echo $line;
done < <( sed 's/<[^>]*>//g' /tmp/xml | sed '/^$/d')
答案 2 :(得分:0)
我会使用XQuery。感觉比XSLT更清晰。例如,使用我自己的XQuery interpreter(遗憾的是无法直接更新文件):
xidel --xml file2.xml --xquery '<ITEMS>{ITEMS/EVENT, doc("file1.xml")/ITEMS/EVENT/<EVENT><sign codice="{codpal}" pro="{programming}" id="{idCategory}" data="{date}" /></EVENT>}</ITEMS>' > file2.new.xml
mv file2.new.xml file2.xml