Python lxml:如何使用xml文件中定义的xml架构文件验证文件

时间:2012-09-07 16:54:01

标签: python lxml

我正在使用Python lxml库来解析xml文件。我需要针对xml架构验证xml文件。 lxml支持XML模式验证,但必须提供xml模式文件路径/内容(此处提供的信息:http://lxml.de/validation.html)。但是,我事先不知道xml架构文件路径,它应该从xml文件头标记中解析。我找不到访问这些标签的方法。

lxml以某种方式支持这个用例吗?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

如果使用根元素上的属性链接模式,则在http://www.w3.org/2001/XMLSchema-instance命名空间中,您可以通过在大括号中使用命名空间URL作为前缀来为lxml检索这些属性:

XMLSchemaNamespace = '{http://www.w3.org/2001/XMLSchema-instance}'
document = lxml.parse(xmlfile)
schemaLink = document.get(XMLSchemaNamespace + 'schemaLocation')
if schemaLink is None:
    schemaLink = document.get(XMLSchemaNamespace + 'noNamespaceSchemaLocation')

然后使用URL库从引用的位置加载架构。有关详细信息,请参阅lxml namespace handling