对于小数据返回值直接可采用Document、element的解析方式即可获得xml节点值。
但对于返回值大于10M的数据,Document解析就显得吃力甚至出现程序中断情况。针对返回数据大的xml可采取Java String
分割截取方式处理。
如下报文返回的是银行信息,程序需要获得BankLocationCode、BankLocationName、BankId、AreaId节点值。
可采取如下处理方式
步骤一:压缩文件,把xml中的内容进行过滤替换,把空格回车都去掉,BankLocation可替换为@用于压缩文件,经过替换原40M的报文最终解析为9M。
步骤二:根据解析后的String 对内容进行分割处理,分割成多个list,如下为报文样例和程序样例
返回报文样式格式
<Root>
<Head>
<Version>20</Version>
<LastVersion>0</LastVersion>
<dataType>5</dataType>
<TotalNum>130953</TotalNum>
<CreateTime>2015-03-17 17:52:27</CreateTime>
</Head>
<Body>
<BankLocation>
<BankLocationCode>000998800006</BankLocationCode>
<BankLocationName>电子联行转换中心</BankLocationName>
<BankId>0</BankId>
<AreaId>0</AreaId>
<CityId>0</CityId>
<ActionType>1</ActionType>
</BankLocation>
<BankLocation>
<BankLocationCode>001612845001</BankLocationCode>
<BankLocationName>崇左市中心支行</BankLocationName>
<BankId>0</BankId>
<AreaId>0</AreaId>
<CityId>0</CityId>
<ActionType>1</ActionType>
</BankLocation>
</Body>
</Root>
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputSt