我正在解析一个非常大的xml文件(>2gb),信息按以下方式排列。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document>
<CreditInfo>
<HeaderInfo>
<Name>Sample Value</Name>
</HeaderInfo>
<PaymentInfo>
<value>100</value>
</PaymentInfo>
<PaymentInfo>
<value>100</value>
</PaymentInfo>
<PaymentInfo>
<value>100</value>
</PaymentInfo>
<PaymentInfo>
<value>100</value>
</PaymentInfo>
<PaymentInfo>
<value>100</value>
</PaymentInfo>
<PaymentInfo>
<value>100</value>
</PaymentInfo>
<PaymentInfo>
<value>100</value>
</PaymentInfo>
<OtherInfo>
<value>something</value>
</OtherInfo>
</CreditInfo>
</Document>
我不想在内存中加载整个文档。我喜欢打一个电话去拿 HeaderInfo
然后去拿 PaymentInfo
一次一个,直到我到达文件的结尾。我正在使用 spring-oxm
```
org.springframework
spring-oxm
我当前的代码包含jaxb2marshaller配置
@Bean
Jaxb2Marshaller jaxb2Marshaller(){
Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();
jaxb2Marshaller.setPackagesToScan(
"com.sample.model"
);
return jaxb2Marshaller;
}
还有我的服务方法
@Service
public class ParsingService {
private final Jaxb2Marshaller jaxb2Marshaller;
public ParsingService(Jaxb2Marshaller jaxb2Marshaller) {
this.jaxb2Marshaller = jaxb2Marshaller;
}
public JAXBElement<Document> getDocument(InputStream fileInputStream){
return (JAXBElement<Document>) jaxb2Marshaller.unmarshal(new StreamSource(fileInputStream));
}
}
我试着给它添加其他方法 `getHeaderInfo` 以及 `PaymentInfo` 但这行不通。上面的方法对整个文档进行解组,我认为我不能将其存储在内存中。
暂无答案!
目前还没有任何答案,快来回答吧!