0

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

<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>

4

1 回答 1

0

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

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

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

我不知道您有什么限制,但考虑到您想要接受无效的 XML 文档,您可能会考虑获取第三方 XSD 并维护您自己的(扩展)版本。然后您无法处理尝试解决此问题,您实际上可以打开验证。

于 2013-09-12T17:02:02.383 回答