我正在使用Python lxml库来解析xml文件。我需要针对xml架构验证xml文件。 lxml支持XML模式验证,但必须提供xml模式文件路径/内容(此处提供的信息:http://lxml.de/validation.html)。但是,我事先不知道xml架构文件路径,它应该从xml文件头标记中解析。我找不到访问这些标签的方法。
lxml以某种方式支持这个用例吗?
提前感谢您的帮助。
答案 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。