我有以下XML响应代码:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><CalculatePremiumResponse xmlns="http://tempuri.org/"><XmlResult><ResponseData>
<ErrorDetails>
<ErrorCode>1a</ErrorCode>
<ErrorDesc>Mandatory fields missing</ErrorDesc>
<Remarks>PIAM Code, Body Type</Remarks>
<WarningInd>N</WarningInd>
</ErrorDetails>
</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
元素时,它将返回空。
您可以使用local-name()
忽略名称空间:
//*[local-name()='CalculatePremiumResponse']/*[local-name()='XmlResult']/*[local-name()='ResponseData']/*[local-name()='ErrorDetails']/*[local-name()='ErrorCode']