lxmlを使用してパス内のxmlファイルを解析およびオブジェクト化しています。多くのモデルとxsdがあり、各オブジェクトモデルは特定の定義済みクラスにマップされます。たとえば、xmlがmodelタグで始まる場合、それはdataModelであり、ページタグを使用すると、viewModelになります。
私の質問は、xmlファイルがどのタグで始まるかを効率的に検出し、適切なxsdファイルで解析してからオブジェクト化する方法です。
files = glob(os.path.join('resources/xml', '*.xml'))
for f in files:
xmlinput = open(f)
xmlContent = xmlinput.read()
if xsdPath:
xsdFile = open(xsdPath)
# xsdFile should retrieve according to xml content
schema = etree.XMLSchema(file=xsdFile)
xmlinput.seek(0)
myxml = etree.parse(xmlinput)
try:
schema.assertValid(myxml)
except etree.DocumentInvalid as x:
print "In file %s error %s has occurred." % (xmlPath, x.message)
finally:
xsdFile.close()
xmlinput.close()