2016-03-15 50 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

相关问题