我有几个关于JAXB
的问题:
解析有哪些选项?我可以轻松实现/插入我自己的解析器吗?
有效性怎么样?假设我有一个放松的解析器,对于模式有些放松。我还可以创建一个(无效的)对象结构吗?
JAXB
是否提供了特殊方法,例如验证对象?我想解析一个“无效”的对象结构,有一些算法修复它,然后验证(用Java)。
JAXB
是否提供了其他方法来对象进行奇特的事情(例如访客模式)。
内存占用情况如何?对象表示(忽略解析)对于10-100MB的XML
文件是否可行?
赞赏这类问题的好教程,Google只透露了粗略的概述。
答案 0 :(得分:3)
以下是我对你问题的回答:
解析有哪些选项?我可以实现/插件自己的 解析器很容易?
JAXB(JSR-222)实现可以从许多不同的输入类型解组:InputStream
,InputSource',
节点,
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
解组对象。