2012-07-04 2 views
1

Мне нужно сравнить два файла XML с помощью Python. Каждый из них имеет список элементов, и я должен выводить, какие элементы не отображаются в обоих. Каждый элемент имеет различные свойства, которые должны согласиться, чтобы увидеть, является ли он одним и тем же предметом.Python XML анализ синтаксического анализа файлов

Какой парсер был бы наиболее подходящим. Он уже должен быть включен в Python 2.7. Я посмотрел на этрию, но это позволяет мне делать то, что я хочу легко? Или есть что-то еще, что было бы более подходящим. Благодаря!

ответ

0

это зависит, если ваш XML-элемент имеет вспомогательный элемент, и что к югу элементу также необходим сравнить, с помощью DOM,

ваших элементов можно сравнить только имеют атрибуты, Тана с использованием SAX является лучшим способом, я отправляю некоторые SAX-код здесь вы можете исх:

import xml.sax 
from xml.sax.handler import ContentHandler 

class TableHandler(ContentHandler): 
    def __init__(self): 
     self.columns = {} 

    def startElement(self, name, attrs): 
     if name == 'R': 
      for k, v in attrs.items(): 
       if not self.columns.has_key(k): 
        self.columns[k] = [] 
       self.columns[k].append(v) 

def xml_to_table(xml_str): 
    handler = TableHandler() 
    xml.sax.parseString(xml_str, handler) 
    return handler.columns 

if __name__ == '__main__':  
    txt = """<xml> 
    <R CatalogId="8"/><R CatalogId="8"/><R CatalogId="7"/> 
    </xml> 
    """ 

    columns = xml_to_table(txt) 
    print columns 
0

вы можете использовать lxml. Вы можете просмотреть элементы первого файла и проверить, находятся ли они во втором файле с xml.find(".//itemname")