在另一个字段上获取特定条件下的XML字段值 - 最快的方法

时间:2018-05-30 14:59:13

标签: java xml

有很多方法。但我很想知道是否有更快的方法(考虑开发时间)或API,我可以在其他领域的特定标准上检索指定字段的值。

也就是说,考虑我有这个xml:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <port:getAllIdentificationsResponse xmlns:port="http://www.ibm.com/Party">
         <ResponseControl xmlns="http://www.ibm.com/schema">
            <ResultCode>SUCCESS</ResultCode>
            <ServiceTime>8</ServiceTime>
         </ResponseControl>
         <PartyIdentificationBObj>
            <IdentificationIdPK>1234</IdentificationIdPK>
            <IdentificationValue>DRIVER LICENSE</IdentificationValue>
            <IdentificationNumber>5678</IdentificationNumber>
            <PartyIdentificationLastUpdateUser>EVERGREEN</PartyIdentificationLastUpdateUser>
            <PartyIdentificationLastUpdateTxId>7777</PartyIdentificationLastUpdateTxId>
         </TCRMPartyIdentificationBObj>
         <PartyIdentificationBObj>
            <IdentificationIdPK>2345</IdentificationIdPK>
            <IdentificationValue>SOURCE IDENTIFIER</IdentificationValue>
            <IdentificationNumber>429043825</IdentificationNumber>
            <PartyIdentificationLastUpdateUser>EVERGREEN</PartyIdentificationLastUpdateUser>
            <PartyIdentificationLastUpdateTxId>8888</PartyIdentificationLastUpdateTxId>
         </TCRMPartyIdentificationBObj>
         <PartyIdentificationBObj>
            <IdentificationIdPK>3456</IdentificationIdPK>
            <PartyId>249443337882014002</PartyId>
            <IdentificationType>300</IdentificationType>
            <IdentificationValue>MEMBERSHIP NUMBER</IdentificationValue>
            <IdentificationNumber>429043825</IdentificationNumber>
            <PartyIdentificationLastUpdateUser>EVERGREEN</PartyIdentificationLastUpdateUser>
            <PartyIdentificationLastUpdateTxId>9999</PartyIdentificationLastUpdateTxId>
         </TCRMPartyIdentificationBObj>
         <PartyIdentificationBObj>
            <IdentificationIdPK>4567</IdentificationIdPK>
            <IdentificationValue>SOURCE IDENTIFIER</IdentificationValue>
            <IdentificationNumber>UTS~^~3229004~^~1</IdentificationNumber>
            <PartyIdentificationLastUpdateUser>EVERGREEN</PartyIdentificationLastUpdateUser>
            <PartyIdentificationLastUpdateTxId>1111</PartyIdentificationLastUpdateTxId>
         </TCRMPartyIdentificationBObj>
      </port:getAllIdentificationsResponse>
   </soapenv:Body>
</soapenv:Envelope>

我想返回 IdentificationValue SOURCE IDENTIFIER 的所有字段的 IdentificationNumber

我的结果应该是 429043825 UTS~ ^ ~3229004~ ^ ~1

关于哪种方式最好的建议会更有帮助。

1 个答案:

答案 0 :(得分:1)

对于指定谁和通过什么,最快是毫无意义的。开发时间或处理速度最快?如果要进行处理,几乎可以肯定不重要,但您必须针对特定的软件和硬件环境进行衡量。

保存自己(可能)不必要的担心,只使用XPath ......

这个XPath,

//PartyIdentificationBObj[IdentificationValue='SOURCE IDENTIFIER']/IdentificationNumber

将根据请求返回IdentificationNumber元素的所有PartyIdentificationBObj元素子元素,其子元素IdentificationValue元素的字符串值等于"SOURCE IDENTIFIER"