Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过NetSuite脚本解析XML(SOAP响应)_Soap_Xml Parsing_Netsuite_Echosign - Fatal编程技术网

通过NetSuite脚本解析XML(SOAP响应)

通过NetSuite脚本解析XML(SOAP响应),soap,xml-parsing,netsuite,echosign,Soap,Xml Parsing,Netsuite,Echosign,在Netsuite脚本中,我试图解析来自EchoSign Webservice的响应。EchoSign的反应是这样的 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soa

在Netsuite脚本中,我试图解析来自EchoSign Webservice的响应。EchoSign的反应是这样的

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soap:Body>
        <getFormDataResponse xmlns="http://api.echosign">
            <getFormDataResult xmlns="http://api.echosign">
                <errorCode xmlns="http://dto8.api.echosign">OK</errorCode>
                <errorMessage xmlns="http://dto8.api.echosign" xsi:nil="true" />
                <formDataCsv xmlns="http://dto8.api.echosign">SOME DATA </formDataCsv>
                <success xmlns="http://dto8.api.echosign">true</success>
            </getFormDataResult>
        </getFormDataResponse>
    </soap:Body>
</soap:Envelope>

但不知何故,我总是从nlapiSelectValue方法中得不到任何回报

名称空间的处理方式似乎存在问题。使用Notepad++的XML工具插件和您提供的XML,XPATH当前节点选择器甚至无法正确找到
getFormDataResponse
节点。它只是以“未知异常”的形式失败

我还尝试手动计算以下表达式:

  • /soap:Envelope/soap:Body
    (作品)
  • /soap:Envelope/soap:Body/getFormDataResponse
    (失败)
  • /soap:Envelope/soap:Body//getFormDataResponse
    (失败)
  • /soap:Envelope/soap:Body/*[local-name()='getFormDataResponse']
    (失败)
  • /soap:Envelope/soap:Body/subjections::*[local-name()='getFormDataResponse']
    (失败)
  • /soap:Envelope/soap:Body/subjections::getFormDataResponse
    (失败)
如果我修改XML,使EchoSign名称空间位于带有前缀的信封中,如下所示:

<soap:Envelope xmlns:echo="http://api.echosign" xmlns:dto8="http://dto8.api.echosign" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soap:Body>
        <echo:getFormDataResponse>
            <echo:getFormDataResult>
                <dto8:errorCode>OK</dto8:errorCode>
                <dto8:errorMessage xsi:nil="true" />
                <dto8:formDataCsv>SOME DATA</dto8:formDataCsv>
                <dto8:success>true</dto8:success>
            </echo:getFormDataResult>
        </echo:getFormDataResponse>
    </soap:Body>
</soap:Envelope>

好啊
一些数据
真的
然后,路径选择器可以一直正确地到达
formDataCsv
节点。它返回路径:
/soap:Envelope/soap:Body/echo:getFormDataResponse/echo:getFormDataResult/dto8:formDataCsv

不确定这有多大帮助,因为您无法控制EchoSign发送给您的XML,但我不确定如何正确格式化XPATH以处理名称空间。

这似乎是名称空间处理方式的问题。使用Notepad++的XML工具插件和您提供的XML,XPATH当前节点选择器甚至无法正确找到
getFormDataResponse
节点。它只是以“未知异常”的形式失败

我还尝试手动计算以下表达式:

  • /soap:Envelope/soap:Body
    (作品)
  • /soap:Envelope/soap:Body/getFormDataResponse
    (失败)
  • /soap:Envelope/soap:Body//getFormDataResponse
    (失败)
  • /soap:Envelope/soap:Body/*[local-name()='getFormDataResponse']
    (失败)
  • /soap:Envelope/soap:Body/subjections::*[local-name()='getFormDataResponse']
    (失败)
  • /soap:Envelope/soap:Body/subjections::getFormDataResponse
    (失败)
如果我修改XML,使EchoSign名称空间位于带有前缀的信封中,如下所示:

<soap:Envelope xmlns:echo="http://api.echosign" xmlns:dto8="http://dto8.api.echosign" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soap:Body>
        <echo:getFormDataResponse>
            <echo:getFormDataResult>
                <dto8:errorCode>OK</dto8:errorCode>
                <dto8:errorMessage xsi:nil="true" />
                <dto8:formDataCsv>SOME DATA</dto8:formDataCsv>
                <dto8:success>true</dto8:success>
            </echo:getFormDataResult>
        </echo:getFormDataResponse>
    </soap:Body>
</soap:Envelope>

好啊
一些数据
真的
然后,路径选择器可以一直正确地到达
formDataCsv
节点。它返回路径:
/soap:Envelope/soap:Body/echo:getFormDataResponse/echo:getFormDataResult/dto8:formDataCsv

不确定这有多大帮助,因为您无法控制EchoSign发送给您的XML,但我不确定如何正确格式化XPATH以处理名称空间。

不带任何前缀的节点应使用默认前缀nlapi:


例如/soap:Envelope/soap:Body/nlapi:getFormDataResponse

应使用默认前缀nlapi:


例如/soap:Envelope/soap:Body/nlapi:getFormDataResponse

这种处理方式很奇怪,但确实有效。谢谢你的回复。奇怪的处理方式,但它起了作用。感谢您的回复。完全同意,但正如您所提到的,xml来自EchoSign,因此对此无能为力。完全同意,但正如您所提到的,xml来自EchoSign,因此对此无能为力。