如何处理XML响应。无法获取元素数据

问题描述 投票:-1回答:1

我有以下XML响应代码:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><CalculatePremiumResponse xmlns="http://tempuri.org/"><XmlResult><ResponseData>&#xD;
  <ErrorDetails>&#xD;
    <ErrorCode>1a</ErrorCode>&#xD;
    <ErrorDesc>Mandatory fields missing</ErrorDesc>&#xD;
    <Remarks>PIAM Code, Body Type</Remarks>&#xD;
    <WarningInd>N</WarningInd>&#xD;
  </ErrorDetails>&#xD;
</ResponseData></XmlResult></CalculatePremiumResponse></s:Body></s:Envelope>

我想获取ErrorCode元素。

我正在使用此代码,我认为应该可以,但不能:

rt.find("./s:Body/r:CalculatePremiumResponse/r:XmlResult/r:ResponseData/r:ErrorDetails/r:ErrorCode",ns)

根据我的理解,这应该可行。它可以工作到ErrorDetails,但是当我尝试获取ErrorCode元素时,它将返回空。

xpath nokogiri
1个回答
0
投票

您可以使用local-name()忽略名称空间:

//*[local-name()='CalculatePremiumResponse']/*[local-name()='XmlResult']/*[local-name()='ResponseData']/*[local-name()='ErrorDetails']/*[local-name()='ErrorCode']
© www.soinside.com 2019 - 2024. All rights reserved.