2016-03-15 3 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.

Как я могу сделать это самым простым способом? Я предпочитаю делать это на питоне.

ответ

0

Итак, вы можете использовать lxml для загрузки вашего XML-файла. u сохраните Владелец и его EtreeElement в dict (например, hashmap). U сортировать 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]) 
0

вы можете использовать LXML LIB, и хранить их в EtreeElements в словаре

Смежные вопросы