【问题标题】:XSD parsing documents and elementsXSD 解析文档和元素
【发布时间】:2014-06-30 09:40:01
【问题描述】:

我有一个xsd,我使用pyxb 为其生成对象类。到目前为止,一切正常,我能够接收文档,错误处理等工作正常。我唯一的问题是,我的 xsd 中有以下内容:

<xs:element name="users">
  <xs:complexType>
    <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="user" />
    </xs:sequence>
  </xs:complexType>
</xs:element>

我在别处定义了user 复杂类型。有时我想从主 xml 文档中获取user,我想从中创建 python 类绑定......但我做不到。 pyxb 只允许我从整个文档创建(使用 CreateFromDocument 函数)。有没有办法只得到一个user 元素?

我读到以下内容:

https://developer.yahoo.com/python/python-xml.html

http://pyxb.sourceforge.net/api/pyxb.binding.basis.element-class.html

http://pyxb.sourceforge.net/userref_pyxbgen.html

【问题讨论】:

    标签: python xml-parsing xsd pyxb


    【解决方案1】:

    所以答案被隐藏在文档中。

    http://pyxb.sourceforge.net/PyXB-1.2.2/examples.html

    假设您有一个user xml 文档。你可以这样做:

    from xml.dom import minidom
    dom = minidom.parseString(string)
    
    # import the xml file you get from pyxbgen
    import user_xsd
    user_xsd.CreateFromDOM(dom.documentElement)
    

    【讨论】:

      【解决方案2】:

      CreateFromDocument() 将为作为架构中顶级元素的任何 XML 片段创建一个绑定。所以你应该能够做到:

      instance = user_xsd.CreateFromDocument(string)
      

      无需先通过 dom 实例。在测试目录中有很多例子可以做到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-14
        • 2012-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多