Python XML解析文件的比较

时间:2012-07-04 09:40:42

标签: python xml xml-parsing elementtree

我必须使用Python比较两个XML文件。每个都有一个项目列表,我必须输出哪些项目都没有出现。每个项目都有各种属性需要同意,看它是否是同一个项目。

哪种解析器最适合。它必须已经包含在Python 2.7中。我看了etree,但它能让我轻松地做我想做的事吗?或者还有其他更合适的东西。谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以使用lxml。您可以浏览第一个文件的项目,并检查它们是否在xml.find(".//itemname")

的第二个文件中