我有一个xsd模式
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Data_Requests">
<xs:complexType>
<xs:sequence>
<xs:element name="Admin">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="SystemId"/>
<xs:element type="xs:string" name="OSName"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="SentRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="database">
<xs:complexType>
<xs:sequence>
<xs:element name="datasetRequest">
<xs:complexType>
<xs:attribute type="xs:string" name="name1111"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
根据xsd模式使用PyXB我创建了类:
python pyxbgen-u schema3.xsd-m schema3
我编写了python脚本,但不知道如何为属性name111设置值
^{pr2}$如何设置属性“name111”的值?在
由于您的xsd模式有多个层,因此您需要逐个膨胀这些层。在
所以你的代码应该是这样的:
rep = Data_Requests() rep.Admin = pyxb.BIND(SystemId = 'system name', OSName = 'Win32NT') rep.SentRequest = pyxb.BIND() rep.SentRequest.database = pyxb.BIND() rep.SentRequest.database.datasetRequest = pyxb.BIND(name1111 = "example name")
;现在,您可以使用以下工具进行测试:
^{pr2}$这将根据您的xsd架构生成以下XML:
<?xml version="1.0" ?> <Data_Requests> <Admin> <SystemId>system name</SystemId> <OSName>Win32NT</OSName> </Admin> <SentRequest> <database> <datasetRequest name1111="example name"/> </database> </SentRequest> </Data_Requests>'
;