假设我想解析一个XML文档,并且它的模式指示给定的元素只能出现一次。
如果元素出现两次或更多次,如何确保引发异常?
或者,如果架构指出给定元素的值应该是整数,并且值是“土耳其三明治”,那么如何使解析器崩溃并像预期的那样刻录?
ElementTree可以这样做吗?有什么可以做的吗?这个问题甚至有意义吗?
最佳答案
STD库中的ElementTree不支持架构。为此,我建议您使用带有它的lxml包(顺便说一句,它快得多)。
下面是我自己的代码的示例:
from lxml import etree
# Create the schema object
with open(xsd_file) as f:
xmlschema_doc = etree.parse(f)
xmlschema = etree.XMLSchema(xmlschema_doc)
# Create a tree for the XML document
doc = etree.parse(xml_text)
# Validate the XML document using the schema
return xmlschema.validate(doc)
或者,如果您希望引发异常:
xmlschema.assertValid(doc)
关于python - 如何使Python的ElementTree强制执行XML模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24729030/