我很难开始使用PyXB.
假设我有一个XSD文件(XML模式).我想要:
我怎么能用PyXB做到这一点?下面是一个编码地址的XSD文件(来自维基百科)的简单示例,但我很难开始使用.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Address">
<xs:complexType>
<xs:sequence>
<xs:element name="FullName" type="xs:string" />
<xs:element name="House" type="xs:string" />
<xs:element name="Street" type="xs:string" />
<xs:element name="Town" type="xs:string" />
<xs:element name="County" type="xs:string" minOccurs="0" />
<xs:element name="PostCode" type="xs:string" />
<xs:element name="Country" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="IN" />
<xs:enumeration value="DE" />
<xs:enumeration value="ES" />
<xs:enumeration value="UK" />
<xs:enumeration value="US" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
一旦我跑了
pyxbgen -u example.xsd -m …Run Code Online (Sandbox Code Playgroud) 我正在使用 odx 文件,并且有一个要运行的generate.py 文件。我正在使用 pyXB。当我尝试跑步时,我得到了这个。
*回溯(最近一次调用最后一次):
文件“C:\Users\rohitkr\Downloads\starter_kit_adas-master\starter_kit_adas-master\devops\scripts\generate_odxf\generate_odxf.py”,第 15 行,来自
schema import odx
文件“C:\Users\rohitkr\Downloads\starter_kit_adas-master\starter_kit_adas-master\devops\scripts\generate_odxf\schema\odx.py”,第 9 行,导入 pyxb.binding
文件“C:\Users\rohitkr\AppData\Local\Programs\Python\Python310\lib\site-packages\pyxb\binding_ init _.py”,第 8 行,来自 . 导入数据类型
文件“C:\Users\rohitkr\AppData\Local\Programs\Python\Python310\lib\site-packages\pyxb\binding\datatypes.py”,第 1266 行,位于 rom 中。导入内容
文件“C:\ Users \ rohitkr \ AppData \ Local \ Programs \ Python \ Python310 \ lib \ site-packages \ pyxb \ binding \ content.py”,第807行,在类_PluralBinding(collections.MutableSequence)中:
AttributeError:模块“集合”没有属性“MutableSequence”*“”
可能是什么问题呢?提前致谢。
我按照这个线程的说明,从这个XML:
<?xml version="1.0" encoding="UTF-8" ?>
<my_report>
<something>
<foo>
Yes
</foo>
</something>
<something_else>
<id>4</id>
<foo>Finally</foo>
<score>0.2</score>
</something_else>
</my_report>
Run Code Online (Sandbox Code Playgroud)
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="my_report">
<xs:complexType>
<xs:sequence>
<xs:element name="something">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="foo"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="something_else">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:byte" name="id"/>
<xs:element type="xs:string" name="foo"/>
<xs:element type="xs:float" name="score"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
然后我pyxben -u my_schema.csd -m my_schema在shell中调用,然后尝试使用绑定构建对象:
from my_schema import my_report
my_xml_report = my_report()
Run Code Online (Sandbox Code Playgroud)
这似乎工作到目前为止(我可以访问my_xml_report.something).但是,当我尝试填充嵌套元素时:
my_xml_report.something.foo …Run Code Online (Sandbox Code Playgroud)