1

我想 a) 生成 XML 请求 b) 并解析响应

基于我从其中一个 OEM 获得的架构(.xsd)。

我在网上进行了研究,generateDS 似乎是我正在寻找的那个,但是我正在努力让它发挥作用。

我能够生成 Python 类,但是我不确定这是否是正确的方法。

  1. 我正在尝试使用从 XSD 创建的 python 模块在运行时生成 xml 请求,这种方法对于生产应用程序是否正确。或者我应该通过 xml.etree.ElementTree 生成 xml 请求(我知道在后台 generateDS 也在使用它)。

  2. 当我实例化一个类时,它不会生成完整的 xml 输出。

最终结果应该是这样的:

<BroadsoftDocument protocol = "OCI" xmlns="C" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <sessionId xmlns="">123123</sessionId>

    <command xsi:type="AuthenticationRequest" xmlns="">
        <userId>12431232131</userId>
    </command>
</BroadsoftDocument>```
  

Help on class AuthenticationRequest in module OCISchemaLogin_gds:

class AuthenticationRequest(OCIRequest)
 |  AuthenticationRequest(echo=None, userId=None, **kwargs_)
 |  
 |  AuthenticationRequest is 1st stage of the 2 stage OCI login process.
 |  
 |  Method resolution order:
 |      AuthenticationRequest
 |      OCIRequest
 |      OCICommand
 |      GeneratedsSuper
 |      builtins.object
 |  
 |  Methods defined here:
 |  
 |  __init__(self, echo=None, userId=None, **kwargs_)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |  


CODE:
auth_req = OCISchemaLogin_gds.AuthenticationRequest(userId = self.userId,)
command =[OCISchemaLogin_gds.OCICommand(extensiontype_='AuthenticationRequest') ]
message = OCISchemaLogin_gds.OCIMessage(protocol='OCI',sessionId=session, userId=self.userId, command= command)
message.export(sys.stdout,1)


OUTPUT:

    <OCIMessage  xmlns:None="C"  protocol="OCI">     <sessionId>12421321</sessionId>
        <userId>12321321</userId>
        <OCICommand xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="AuthenticationRequest"/>
    </OCIMessage>
SUCCESSFUL

我是否正确使用它?

4

1 回答 1

0

当您将genertaDS 下载到您的计算机时,打开tutorial/code/my_test.py 获取一个示例,该示例将从people.xsd(xml 模式)构建people.xml。顺便说一句,它还基于包含所有类的模式创建 people_api.py。

阶段:1.从cmd运行:

python generateDS.py -o people.py people.xsd

这将基于包含所有类的架构创建 people_api.py。2.从cmd运行:

python my_test.py

这将获得一个 xml 输出到标准输出。

于 2020-03-01T10:09:20.693 回答