Java大XML高效转换:将PurchaseHistory的Type属性复制至StoreTransaction
Java高效处理大体积XML(200MB+)的转换需求
我需要完成以下XML转换操作:
- 将每个
<PurchaseHistory>父节点的Type属性复制到它的所有子节点<StoreTransaction>中 - 移除所有
<PurchaseHistory>节点
输入XML示例:
<ArrayOfStoreTransaction CustomerID="C1"> <PurchaseHistory Type="purchase.001" Count="2"> <StoreTransaction> <CustomerID>C1</CustomerID> <CustomerAccount>C1A</CustomerAccount> </StoreTransaction> <StoreTransaction> <CustomerID>C1</CustomerID> <CustomerAccount>C1A</CustomerAccount> </StoreTransaction> </PurchaseHistory> <PurchaseHistory Type="purchase.002" Count="1"> <StoreTransaction> <CustomerID>S3</CustomerID> <CustomerAccount>S3A</CustomerAccount> </StoreTransaction> </PurchaseHistory> <PurchaseHistory Type="purchase.003" Count="2"> <StoreTransaction> <CustomerID>S3</CustomerID> <CustomerAccount>S3A</CustomerAccount> </StoreTransaction> <StoreTransaction> <CustomerID>S3</CustomerID> <CustomerAccount>S3A</CustomerAccount> </StoreTransaction> </PurchaseHistory> </ArrayOfStoreTransaction>
输出XML示例:
<ArrayOfStoreTransaction CustomerID="C1"> <StoreTransaction Type="purchase.001"> <CustomerID>C1</CustomerID> <CustomerAccount>C1A</CustomerAccount> </StoreTransaction> <StoreTransaction Type="purchase.001"> <CustomerID>C1</CustomerID> <CustomerAccount>C1A</CustomerAccount> </StoreTransaction> <StoreTransaction Type="purchase.002"> <CustomerID>S3</CustomerID> <CustomerAccount>S3A</CustomerAccount> </StoreTransaction> <StoreTransaction Type="purchase.003"> <CustomerID>S3</CustomerID> <CustomerAccount>S3A</CustomerAccount> </StoreTransaction> <StoreTransaction Type="purchase.003"> <CustomerID>S3</CustomerID> <CustomerAccount>S3A</CustomerAccount> </StoreTransaction> </ArrayOfStoreTransaction>
由于待处理的XML文件体积超过200MB,常规DOM解析会占用过多内存,因此寻求Java环境下兼顾内存占用与执行效率的XML处理库,来高效完成上述转换。
内容的提问来源于stack exchange,提问作者Adnan
相关产品推荐
相关产品推荐

