我需要在 Python 中解析文件 .xsd,就像解析 XML 一样。
我正在使用 libxml2。
我必须解析如下所示的 xsd:
<xs:complexType name="ClassType">
<xs:sequence>
<xs:element name="IeplcHeader">
<xs:complexType>
<xs:sequence>
<xs:element name="device-number" type="xs:integer" fixed="1"/>
</xs:sequence>
<xs:attribute name="version" type="xs:integer" use="required" fixed="0"/>
</xs:complexType>
</xs:element>
当我访问时
doc.xpathEval('//xs:complexType/xs:sequence/xs:element[@name="IeplcHeader"]'):
告诉我找不到路径。
而如果我删除所有 xs: 如下
<complexType name="ClassType">
<sequence>
<element name="IeplcHeader">
<complexType>
<sequence>
<element name="device-number" type="xs:integer" fixed="1"/>
</sequence>
<attribute name="version" type="xs:integer" use="required" fixed="0"/>
</complexType>
</element>
这样就可以了
doc.xpathEval('//complexType/sequence/element[@name="IeplcHeader"]'):
有谁知道我如何才能阅读修复前缀的这个问题?现在我正在准备删除 xs 的文件:但这是一个糟糕的解决方案,我真的希望能够找到更好的解决方案。
(我还没有尝试使用 py-dom-xpath,我不知道是否可以使用 xs:)
谢谢,
斯特
如果您必须处理 xsd 文件,也许还使用它们来验证 xml 文件,我建议您传递给lxml http://lxml.de/validation.html#xmlschema对 XMLSchema 文件有很好的支持。
示例代码:
from lxml import etree
from cStringIO import StringIO
f = StringIO()
f = StringIO('''\
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="a" type="AType"/>
<xsd:complexType name="AType">
<xsd:sequence>
<xsd:element name="b" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
''')
xmlschema_doc = etree.parse(f)
xmlschema_doc.xpath('xsd:element',
namespaces={"xsd": "http://www.w3.org/2001/XMLSchema"})
结果是:
[<Element {http://www.w3.org/2001/XMLSchema}element at 0x9a17f2c>]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)