gpt4 book ai didi

java - 在 JAXB 中,我可以创建一个 Unmarshaller 实例并使用它多次解码 xml 节点或文件吗?

转载 作者:数据小太阳 更新时间:2023-10-29 02:54:01 24 4
gpt4 key购买 nike

我使用 SAX 来解析一个大的 xml 文件,这个文件很大并且有很多重复的节点。并使用JAXB将解析重复的dom节点映射到javabean中进行持久化。

这是我的代码片段。我使用 JAXB 的 partial unmarshalling 示例代码,它在每次开始节点解析时创建 Unmarshaller 对象。 我可以将它重用于一个完整的 xml 解析还是缓存它用于多个 xml 解析?

public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
...

if (namespaceURI.equals("") && localName.equals( “product” )) {
Unmarshaller unmarshaller = null;
try {
//I want to reuse it, not create it in each startElement method
unmarshaller = jaxbContext.createUnmarshaller();
} catch (JAXBException e) {
throw new SAXException(e);
}
...

最佳答案

只要您的 JAXBContext 没有改变,您就可以重用解码器。

另见 Javadoc for JAXBContext .它包含一个示例,该示例对多个 XML 文件重用相同的解码器,仅当上下文(BazObject 的包不在上下文路径上)发生变化时,您需要从一个新的解码器创建一个新的解码器不同的语境。

关于java - 在 JAXB 中,我可以创建一个 Unmarshaller 实例并使用它多次解码 xml 节点或文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15542754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com