评估JAXB

时间:2012-06-06 16:08:06

标签: java xml jaxb

我有几个关于JAXB的问题:

  1. 解析有哪些选项?我可以轻松实现/插入我自己的解析器吗?

  2. 有效性怎么样?假设我有一个放松的解析器,对于模式有些放松。我还可以创建一个(无效的)对象结构吗?

  3. JAXB是否提供了特殊方法,例如验证对象?我想解析一个“无效”的对象结构,有一些算法修复它,然后验证(用Java)。

  4. JAXB是否提供了其他方法来对象进行奇特的事情(例如访客模式)。

  5. 内存占用情况如何?对象表示(忽略解析)对于10-100MB的XML文件是否可行?

  6. 赞赏这类问题的好教程,Google只透露了粗略的概述。

1 个答案:

答案 0 :(得分:3)

以下是我对你问题的回答:

  

解析有哪些选项?我可以实现/插件自己的   解析器很容易?

JAXB(JSR-222)实现可以从许多不同的输入类型解组:InputStreamInputSource',节点, XMLStreamReader , XMLEventReader ,文件, Source`。如果您的XML表示与其中任何一个匹配,那么您就已经完成了设置。

  

有效性怎么样?假设我有一个轻松的解析器   关于架构放松了。我还可以创建(无效)   对象的结构

JAXB实现要求XML格式良好,但不要求它对XML模式有效。它旨在处理各种文档。如果要确保“有效性”,则可以设置XML模式(请参阅JAXB and Marshal/Unmarshal Schema Validation)。

  

JAXB是否提供了特殊的方法,例如验证对象?   我想解析一个“无效”的对象结构,有一些   算法修复它,然后验证(用Java)。

您可以使用javax.xml.validation API对对象模型进行验证。有关完整示例,请参阅:

  

JAXB是否提供其他方法来对象进行奇特的事情(例如   访客模式)。

JAXB模型是POJO,因此您可以根据需要进行设计。您可能对以下课程感兴趣:

  

内存占用情况如何?是对象表示   (无论解析)对10-100MB的XML文件是否可行?

是的JAXB可用于处理该大小的文档。如果您担心大小,可以使用XMLStreamReader来解析XML文件,然后从块中XMLStreamReader解组对象。