从XSD模式到Xml文档。设置属性值

2024-04-19 23:36:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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”的值?在


Tags: namestring属性schematype模式elementxsd
1条回答
网友
1楼 · 发布于 2024-04-19 23:36:50

由于您的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")

和13;
和13;

现在,您可以使用以下工具进行测试:

^{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>'

和13;
和13;

相关问题 更多 >