Jaxb结合了xmls

时间:2012-04-03 14:55:56

标签: java xml jaxb

我正在使用Jaxb读取xml文件,现在xml文件的内容正在增加,文件变得太难以维护,有没有什么方法可以模块化xml,将其拆分成多个文件?无论如何在jaxb中以更简单的方式执行此操作?

4 个答案:

答案 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文件的引用(作为字符串),并且在我请求时,延迟加载器从其自己的文件中加载实际对象。

这个解决方案在我的经验中运作良好,因为它避免了一次将所有内容存储在内存中。