我必须使用Python比较两个XML文件。每个都有一个项目列表,我必须输出哪些项目都没有出现。每个项目都有各种属性需要同意,看它是否是同一个项目。
哪种解析器最适合。它必须已经包含在Python 2.7中。我看了etree,但它能让我轻松地做我想做的事吗?或者还有其他更合适的东西。谢谢!
答案 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")