Comparación de análisis XML de Python de archivos

Tengo que comparar dos archivos XML usando Python. Cada uno tiene una lista de elementos y tengo que mostrar qué elementos no aparecen en ambos. Cada elemento tiene varias propiedades que deben estar de acuerdo para ver si es el mismo elemento.

Qué analizador sería el más adecuado. Ya debe estar incluido en Python 2.7. Miré etree, pero ¿me permite hacer lo que quiero fácilmente? O hay algo más que sería más adecuado. ¡Gracias!

preguntado el 04 de julio de 12 a las 10:07

2 Respuestas

depende, si su elemento xml tiene un subelemento, y ese subelemento también debe compararse, use DOM,

sus elementos para comparar solo tienen atributos, que usar SAX es la mejor manera, publico un código SAX aquí que puede consultar:

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

Respondido 04 Jul 12, 10:07

Puedes usar lxml. Puede revisar los elementos del primer archivo y verificar si están en el segundo archivo con xml.find(".//itemname")

Respondido 04 Jul 12, 10:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.