我正在使用Jaxb读取xml文件,现在xml文件的内容正在增加,文件变得太难以维护,有没有什么方法可以模块化xml,将其拆分成多个文件?无论如何在jaxb中以更简单的方式执行此操作?
答案 0 :(得分:1)
好吧,哟,你可以在你的XML文件中使用经过验证的(但非常不喜欢的)ENTITY方法,例如。
<!DOCTYPE config [
<!ENTITY subpart1 SYSTEM 'config_subpart1.xml'>
<!ENTITY subpart2 SYSTEM 'config_subpart2.xml'>
]>
<config>
<!-- some top-level config items in the main file
<item1>value</item1>
...
<!-- then the external parts -->
&subpart1;
...
&subpart2;
...
</config>
XML文档在技术上是相同的,您的JAXB代码应该没有任何区别。
答案 1 :(得分:0)
您可以按块读取大型xml文档块。
http://jaxb.java.net/guide/Dealing_with_large_documents.html
这个JAXB文档说JAXB RI发布中有一些例子。
答案 2 :(得分:0)
您可以使用STAX和JAXB的组合。使用STAX到达要读取的元素,然后使用JAXB将元素映射到对象。这样你就只能读取对象所需的元素。您需要智能地设计和管理模式。
答案 3 :(得分:0)
我最终实现了自己的XmlAdapter,使LargeObject
适应特殊LazyLargeObjectLoader
。因此,主XML文件仅存储对大对象的xml文件的引用(作为字符串),并且在我请求时,延迟加载器从其自己的文件中加载实际对象。
这个解决方案在我的经验中运作良好,因为它避免了一次将所有内容存储在内存中。