Python中的XML选择

Python中的XML选择,python,xml,soap,lxml,Python,Xml,Soap,Lxml,我是XML新手,正在从事一个包含多个XML父级和子级组合和选择的项目。我不知道如何有条件地从TaskID、PAReportDefinition和RiskReportsDefinition中选择选项。我尝试用多种组合嵌套父节点和子节点,但在执行以下代码时遇到了“远程异常:找不到数据节点:[name=a,owner=b] <wsdl:operation name="RetrieveTemplateReports"> <ws

我是XML新手,正在从事一个包含多个XML父级和子级组合和选择的项目。我不知道如何有条件地从
TaskID
PAReportDefinition
RiskReportsDefinition
中选择选项。我尝试用多种组合嵌套父节点和子节点,但在执行以下代码时遇到了“远程异常:找不到数据节点:[name=a,owner=b]

        <wsdl:operation name="RetrieveTemplateReports">
            <wsdl:input message="bdt:RetrieveTemplateReportsInput"/>
            <wsdl:output message="bdt:RetrieveTemplateReportsOutput"/>
        </wsdl:operation>



            <xsd:element name="RetrieveTemplateReportsRequest">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="User" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                        <xsd:element name="Client" type="xsd:string" minOccurs="1" maxOccurs="1"/>
                        <xsd:element name="Password" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                        <xsd:element name = "RetrieveReportsInputParams" type="bdt:RetrieveReportsInputParams" minOccurs="1" maxOccurs="1"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>


            <xsd:complexType name="RetrieveReportsInputParams" >
                <xsd:sequence>
                <xsd:choice minOccurs="1" maxOccurs="1">
                    <xsd:element name="TaskId" type="xsd:string" minOccurs="0" maxOccurs="1"/>
                    <xsd:element name="PAReportDefinition" type="bdt:ReturnAttribution" minOccurs="0" maxOccurs="1"/>
                    <xsd:element name="RiskReportsDefinition" type="bdt:RiskReportsDefinition" minOccurs="0" maxOccurs="1"/>
                </xsd:choice>
                <xsd:choice minOccurs="1" maxOccurs="1">
                    <xsd:element name="ReportParametersList" type ="bdt:ReportParametersDef" minOccurs="0" maxOccurs="1" />
                    <xsd:element name="ReportTemplate" type ="bdt:ReportTemplate" minOccurs="0" maxOccurs="1" />
                </xsd:choice>
            </xsd:sequence>
            </xsd:complexType>


            <xsd:complexType name="ReportTemplate">
                <xsd:attribute name = "TemplateName" type="xsd:string" use="required"/>
                <xsd:attribute name="TemplateOwner" type="xsd:string" use="required"/>
            </xsd:complexType>

最终目标是通过RetrieveTemplateReports父级返回基于TemplateName和TemplateOwner的模板报告。

您的输入数据似乎比代码中显示的数据更复杂,因此:

  • 获取您的WSDL文件并将其提供给。然后,SoapUI可以为您的操作创建示例请求。然后,您可以在示例请求中看到所有参数以及您需要如何构造它们

  • 一旦有了这些参数,就可以构建参数来调用操作。发送参数的最干净、更可读和更可维护的方式是,而不是从XSD模式中定义的类型创建对象

  • 确保还使用WSDL运行,以查看所有可用操作及其调用签名

  • 尝试使用HTTP监视器将调用发送到,并查看zeep生成的SOAP消息是否具有正确的结构(如WSDL所定义的以及从第一点开始的示例请求中所看到的)

  • 故障排除,直到接到成功的电话