我有一个非常大的文件,其中包含很多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文件中加载脚本并根据所有者的名称对文件内容进行排序,因此以'B'开头的每个人都在File1.xml和每个人否则进入File2.xml。
我将如何以最简单的方式实现这一目标?我更喜欢在python中做到这一点。
答案 0 :(得分:0)
因此,您可以使用lxml加载XML文件。 你将所有者和他的EtreeElement存储在一个dict(如hashmap)中。 你按照所有者对dict进行排序,然后从dict中获取元素并写入输出文件。
示例(未测试)
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])
答案 1 :(得分:0)
你可以使用lxml lib,并将它们存储在字典中的EtreeElements中