Python lxml:如何使用在xml文件中定义的xml模式文件验证文件

3

我正在使用Python的lxml库来解析XML文件。 我需要对一个XML文件进行XML模式验证。 lxml支持XML模式验证,但必须提供XML模式文件路径/内容(有关信息在此处提供:http://lxml.de/validation.html)。然而,我不知道XML模式文件路径,它应该从XML文件头标记中解析出来。 我找不到访问这些标记的方法。

请问lxml是否支持此用例?

1个回答

3

如果架构是使用根元素上的属性链接的,在http://www.w3.org/2001/XMLSchema-instance命名空间中,您可以通过在花括号中前缀命名空间URL的属性名称来检索这些属性:

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命名空间处理

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接