2012-07-04 53 views
1

我必須使用Python比較兩個XML文件。每個都有一個項目列表,我必須輸出哪些項目不會出現在兩個項目中。每個項目都有不同的屬性,需要同意查看它是否是相同的項目。Python XML解析文件比較

哪個解析器最適合。它必須已經包含在Python 2.7中。我看着etree,但它能讓我做我想要的東西嗎?或者還有其他更適合的東西。謝謝!要比較

回答

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")