4

我有几个问题JAXB

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

  2. 有效性呢?假设我有一个放松的解析器,它在模式方面有点放松。我仍然可以创建(无效的)对象结构吗?

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

  4. JAXB确实提供了其他方法来对对象做一些花哨的事情(例如访问者模式)。

  5. 内存占用怎么办?对象表示(忽略解析)对于XML10-100MB 的文件是否可行?

涵盖此类问题的良好教程值得赞赏,谷歌仅显示粗略的概述。

4

1 回答 1

3

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

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

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

有效性呢?假设我有一个放松的解析器,它在模式方面有点放松。我仍然可以创建(无效的)对象结构吗?

JAXB 实现要求 XML 格式正确,但不要求它对 XML 模式有效。它旨在处理各种文件。如果您想确保“有效性”,那么您可以设置 XML 模式(请参阅JAXB 和 Marshal/Unmarshal Schema Validation)。

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

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

JAXB 是否提供其他方法来对对象做一些花哨的事情(例如访问者模式)。

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

内存占用怎么办?对象表示(不考虑解析)对于 10-100MB 的 XML 文件是否可行?

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

于 2012-06-06T18:12:43.230 回答