2011-07-19 93 views
0

我有兩個文件xml,我需要從第一個xml文件中提取數據並插入到第二個xml文件中。我有兩個文件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

斯圖爾特H是rigth。使用真正的XML解析器的解決方案會更好。 Personnaly我會檢查[xmlstar](http://xmlstar.sourceforge.net/)。我不知道這個工具,但它應該幫助你從命令行腳本解析xml。 – Lynch

回答

1

如果這是一個選項,最好編寫一個XSLT來轉換它。這將避免分析錯誤/違規行爲並使其更加可重用。

0

我會剝離HTML標籤和空行,然後把結果數組:

values=(`sed 's/<[^>]*>//g' /tmp/xml | sed '/^$/d'`) 
echo ${values[0]} 

你應該能夠輕鬆地獲得你的價值觀和使用回聲產生預期的輸出。

更新:包含空格的白色字段有問題。你可以嘗試使用這種模式逐行閱讀:

while read line; 
do 
    echo $line; 
done < <(sed 's/<[^>]*>//g' /tmp/xml | sed '/^$/d') 
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 
相關問題