2016-03-15 52 views
0

我有一個非常大的包含大量XML標記的文件。可以很容易讓使用業主和寵物作爲一個例子根據特定標記對XML進行排序

<?xml version="1.0" encoding="UTF-8"?> 
<PetOwnertag> 
    <owner>Bob</owner> 
    <pet>Fluffers</pet> 
</PetOwnertag> 
<PetOwnertag> 
    <owner>Jim</owner> 
    <pet>Mr.Whiskers</pet> 
</PetOwnertag> 

我想做的事情做的是能夠在XML文件中的腳本加載和排序文件的acording給業主的名字的內容,所以以'B'開頭的所有者進入File1.xml,其他人都進入File2.xml。

我該如何去做這個最簡單的方法嗎?我寧願應該用python來做。

回答

0

所以,你可以使用lxml加載你的XML文件。 u將所有者和他的EtreeElement存儲在字典中(如hashmap)。 U按照所有者對字典進行排序,並從字典中獲取元素並寫入輸出文件。

實施例(未測試)

from lxml import parse 
from lxml import etree 
from io import StringIO 

tree = etree.parse(StringIO("your file name")) 
data_dict = dict() 
for child in tree: 
    # Element.tag return the PetOwnerTag. So u must go into, search the element by tag owner and get his value 
    # data_dict[child.tag] = child 
    owner = child.find("owner") 
    if owner: 
     data_dict[owner.text] = child 

for owner in sorted(data_dict.iterkeys()): 
    # here can u write your data to files 
    print owner, etree.tostring (dict[owner]) 
0

你可以在字典使用LXML lib和存儲它們在EtreeElements

相關問題