【问题标题】:Python lxml: how to validate file using xml schema file defined in the xml filePython lxml:如何使用 xml 文件中定义的 xml 模式文件验证文件
【发布时间】:2012-09-01 14:06:07
【问题描述】:

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

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

【问题讨论】:

    标签: python xml xsd lxml


    【解决方案1】:

    如果架构是使用根元素上的属性链接的,则在 http://www.w3.org/2001/XMLSchema-instance 命名空间中,您可以使用 lxml 通过在属性名称前加上大括号中的命名空间 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 namespace handling 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-03
      • 1970-01-01
      • 2014-08-22
      相关资源
      最近更新 更多