2010-11-28 82 views
2

可能重複:
how to read a text file and use it to update XML tag with perl如何使用perl將標籤和屬性添加到XML文件中?

嗨,

我有一個XML文檔,它看起來像這樣:

XML文件

<users> 
<user> 
    <id>12345567</id> 
    <name>Ronsna Stedinberg</name> 
</user> 
<user> 
    <id>12345568</id> 
    <name>Sonsna Dtedinberg</name> 
</user> 
</users> 

和看起來像這樣的文本文件:

文本文件

Ronsna John Stedinberg y 
Sonsna Dtedinberg

我需要能夠讀取該文本文件,並更改名稱標籤在XML文件中告知姓名的,中間名(如果任何)和姓氏基於我在文本文件中的數據,並且還添加op="y"屬性當且僅當文本文件中的任何行的末尾存在「y」時,否則op="n"

輸出應該是這樣的:

輸出文件

<users> 
<user> 
    <id>12345567</id> 
    <name> 
     <firstname op="y">Ronsna</firstname> 
     <middlename op="y">John</middlename> 
     <lastname op="y">Stedinberg</lastname> 
</name> 
</user> 
<user> 
    <id>12345568</id> 
    <name> 
     <firstname op="n">Sonsna</firstname> 
     <lastname op="n">Dtedinberg</lastname> 
    </name> 
</user> 
</users> 

我真的需要幫助?

感謝

+0

你能告訴我們你到目前爲止嘗試過什麼嗎?我建議你看一下XML :: Twig Perl模塊來完成這個任務。 – 2010-11-28 17:32:37

+0

我是一個新手,我會看看XML :: Twig並嘗試做一些事情,請巴特J你可以告訴我你的方式嗎? – aliocee 2010-11-28 17:54:54

回答

0

首先,一個更通用的答案,你非常通用的問題:要添加標籤和屬性到你不想自己實際操作XML的XML文件。這是脆弱的,困難的和不必要的重複。相反,您希望將XML和任何其他輸入文件轉換爲由Perl基本變量構建的Perl數據結構:標量,數組,哈希。

這裏是你可以做一個粗略的概述:

閱讀的東西,如File::Slurp文本文件到一個數組。將每一行分割成它自己的數組,然後爲每一行創建一個匿名散列。如果行數組中的最後一個元素是y或n,則將其彈出(),並將其存儲爲散列鍵「op」。然後,如果結果爲3,則按hashkeys firstname,middlename,lastname中的順序添加值;或者如果它是2,則只需輸入名字,姓氏。

你最終得到一個哈希數組,也許會調用@replacements。

然後用一個解析器(如XML::Simple)加載XML文件,該解析器生成一個包含代表用戶的哈希數組結構的數據結構。對於每個用戶,您將名字和姓氏鍵分爲自己的元素。然後,爲每個用戶遍歷每個替換項,尋找姓和名匹配的地方。

如果他們這樣做,用替換數據重建名稱數據結構。

然後通過XML編寫器運行整個結構,就完成了。

現在,至於這個的實際執行情況,這取決於你。有了這個,你就知道如何去做。當你在路上遇到小的實施細節時,那是你在谷歌或在這裏問的時候。

也請記住,這不是一個詳盡的描述,我不知道所有的變量和輸入,所以我可能會得到錯誤的東西。保持你的智慧銳利。

祝你好運。