Python を使用して 2 つの XML ファイルを比較する必要があります。それぞれにアイテムのリストがあり、両方に表示されないアイテムを出力する必要があります。各アイテムには、同じアイテムかどうかを確認するために同意する必要があるさまざまなプロパティがあります。
どのパーサーが最も適しているか。Python 2.7 に既に含まれている必要があります。etree を見ましたが、やりたいことを簡単に実行できますか? または、より適切な何かが他にありますか。ありがとう!
Python を使用して 2 つの XML ファイルを比較する必要があります。それぞれにアイテムのリストがあり、両方に表示されないアイテムを出力する必要があります。各アイテムには、同じアイテムかどうかを確認するために同意する必要があるさまざまなプロパティがあります。
どのパーサーが最も適しているか。Python 2.7 に既に含まれている必要があります。etree を見ましたが、やりたいことを簡単に実行できますか? または、より適切な何かが他にありますか。ありがとう!
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
lxmlを使用できます。最初のファイルのアイテムを調べて、それらが2番目のファイルにあるかどうかを確認できますxml.find(".//itemname")