2

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

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

4

1 回答 1

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

于 2012-09-07T17:16:11.760 回答