【发布时间】:2016-08-03 11:08:04
【问题描述】:
我需要一个 XPath 表达式从以下示例 XML 脚本中仅检索 BalanceResult 属性的特定值:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ars:QueryBalanceResultMsg xmlns:ars="http://www.huawei.com/bme/cbsinterface/arservices" xmlns:arc="http://cbs.huawei.com/ar/wsservice/arcommon" xmlns:cbs="http://www.huawei.com/bme/cbsinterface/cbscommon">
<QueryBalanceResult>
<ars:AcctList>
<ars:BalanceResult>
<arc:BalanceType>C_MAIN_ACCOUNT</arc:BalanceType>
<arc:BalanceTypeName>MainAccount</arc:BalanceTypeName>
<arc:TotalAmount>80000</arc:TotalAmount>
<arc:BalanceDetail>
<arc:BalanceInstanceID>702000000000008916</arc:BalanceInstanceID>
<arc:EffectiveTime>20160803080942</arc:EffectiveTime>
<arc:ExpireTime>20370101010000</arc:ExpireTime>
</arc:BalanceDetail>
</ars:BalanceResult>
<ars:BalanceResult>
<arc:BalanceType>C_Bonus_Account</arc:BalanceType>
<arc:BalanceTypeName>Bonus Balance Account</arc:BalanceTypeName>
<arc:TotalAmount>3900</arc:TotalAmount>
<arc:BalanceDetail>
<arc:BalanceInstanceID>702000000000008543</arc:BalanceInstanceID>
<arc:EffectiveTime>20160803082506</arc:EffectiveTime>
<arc:ExpireTime>20191211121212</arc:ExpireTime>
</arc:BalanceDetail>
</ars:BalanceResult>
.......
</ars:AcctList>
</QueryBalanceResult>
</ars:QueryBalanceResultMsg>
</soapenv:Body>
这样我的表达式会返回如下内容:
C_MAIN_ACCOUNT, 80000, 20370101010000, C_Bonus_Account, 3900, 20191211121212,... 上面的模板:(arc:BalanceType, arc:TotalAmount, arc:ExpireTime)
下面的表达式返回所有内容,包括不需要的标签。
//*[local-name()='BalanceResult'][*[local-name()='BalanceType']]
另外,由于可能有 n 个 BalanceResult 属性(在上面的示例中,它是 2 个),我无法提出解决方案。
感谢任何帮助!谢谢。
【问题讨论】:
标签: xml xpath xml-parsing