在 JAXB 反序列化期间应用命名空间

主要观点:XML 模式对于 XML 文档的结构有严格规则或一般指导作用,有时人们因某些原因接受不符合 XML 模式的输入,通过 SAX XMLFilter可在解组操作中添加命名空间。
关键信息:

  • Java 模型中定义了Customer类,使用@XmlRootElement注解,且在package-info中用@XmlSchema指定命名空间。
  • 输入 XML 文档未命名空间限定,通过NamespaceFilter(继承XMLFilterImpl)在startElementendElement方法中添加默认命名空间。
  • 在演示中,使用SAXParser创建XMLReader并包裹XMLFilter,将UnmarshallerHandler作为内容处理器,解析输入 XML 后获取Customer对象,再将其编组回 XML 输出,输出包含基于元数据的命名空间限定。
    重要细节:
  • NamespaceFilter中定义了静态常量NAMESPACE为命名空间地址。
  • Demo类中通过一系列步骤创建JAXBContextXMLFilter等,进行 XML 解析和编组操作。
    进一步阅读提供了相关的 JAXB 与命名空间等主题的链接。
阅读 38
0 条评论