JAXB使用绑定XML创建新元素

时间:2013-09-12 16:34:00

标签: java xml jaxb xjc

我正在使用XJC基于模式文件创建JAXB带注释的Java类。我的问题是第三方提供的模式文件缺少实际存在于XML消息本身的对象上的字段。有没有办法使用XML绑定文件来创建字段?我一直试图对下面的绑定进行修改无济于事。在这种情况下,我试图在“Foo”对象上创建一个名为“Bar”的字段。它应该是boolean类型,但我仍然试图找出指定它的位置。

<jaxb:bindings
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1">
    <jaxb:globalBindings localScoping="toplevel"/>
    <jaxb:bindings schemaLocation="mySchemaFile.xsd">
        <jaxb:bindings node="//xs:element[@name='Foo']">
            <jaxb:property name="Bar" />
        </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>

1 个答案:

答案 0 :(得分:0)

XML模式定义了生成有效XML文档的内容。据我所知,JAXB只打算为解析/编写有效的XML文档提供支持。虽然如果你不打开验证,JAXB会读/写的XML文档中肯定存在一些错误,但我会说这是实现的副作用而不是设计要求。

我不知道如何让JAXB创建您正在寻找的额外属性。当然不是绑定文件的一部分。

可以让JAXB生成的类扩展您选择的类,这可能具有额外的属性。也许如果您在该属性上添加正确的注释,您可以将其作为XML读取/写入。

我不知道你有什么限制,但鉴于你想接受无效的XML文档,你可以考虑抓住第三方XSD并维护你自己的(扩展)版本。然后,您无法处理尝试解决此问题,并且您实际上可以启用验证。