假设我想解析一个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/

10-10 07:53