根据特定标记对XML进行排序

时间:2016-03-15 16:49:20

标签: python 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文件中加载脚本并根据所有者的名称对文件内容进行排序,因此以'B'开头的每个人都在File1.xml和每个人否则进入File2.xml。

我将如何以最简单的方式实现这一目标?我更喜欢在python中做到这一点。

2 个答案:

答案 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中