问题标签 [xjb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
555 浏览

java - 从 XML 模式文件和 XJB 绑定生成具有常量的 JAXB 类

目前,在使用生成的 JAXB 类时,我必须在 java 代码中手动硬编码模式版本(或解析它)。这在更改 XML 模式版本时很容易导致错误,并且感觉不对。我想要的是在架构中指定架构版本,并让 xjc 在相应的根元素类中生成一个常量。

我还没有找到可以用来满足这些要求的 JAXB 插件或绑定机制。

例子.xsd

生成的 RootType.class:

0 投票
1 回答
2228 浏览

maven - Maven-Jaxb2 插件类型引用正在抛出已经定义的错误

我是 Jaxb 插件来生成模型的新手。我有 2 个 xsd 文件,其中一个 xsd 引用其他 xsd 中的类型

常见的.xsd

瞳孔.xsd ,这引用了 common.xsd中定义的人

catalog.cat,尝试使用插件的剧集功能

REWRITE_SYSTEM " http://www.example.com/domain/schemas/common/common.xsd " "."

pom.xml,这是我的 Maven 构建配置

当我跑步时mvn clean install,我得到以下 错误

[错误] 解析架构时出错。位置 [ http://www.example.com/domain/schemas/common/common.xsd {XXX,XX}]。org.xml.sax.SAXParseException;系统ID: http ://www.example.com/domain/schemas/common/common.xsd ;行号:XXX;列号:XXX;'person' 已经定义

我尝试使用此处提到的各种选项来解决此错误,但这对我有帮助。我认为我在绑定配置或 pom 配置中做错了什么

有人能指出这里有什么问题吗

0 投票
1 回答
1006 浏览

jaxb - XJC 绑定文件:基于命名空间而不是 schemaLocation 覆盖包

我想通过绑定.xjb文件覆盖我的架构的包。

它是通过以下方式完成的:

JXC 编译器需要上述代码的上下文,通过schemaLocation.

我将文件存储在单独.xsd.xjb目录中,这看起来很难看(就像所有 Java EE 一样):

bindings可以在没有相对路径的情况下定义上下文schemaLocation

我害怕 XML 目录,我们处于 WEB 2.0(或者可能是 4.0?)的世界。

我见过SCD ("schema component designator")。它看起来很有希望,但我找不到这种语法的参考......

0 投票
0 回答
242 浏览

uri - 当模式导入中的反斜杠和指定的绑定时,XJC 失败

我想用 xjc(版本 2.3.0-b170531.0717)从 XSD 生成 Java 类

不幸的是,XSD 导入了另一个在带有 Windows 路径分隔符(反斜杠\)的相对路径中给出的 XSD,根据 RFC-2396 中的xsi:schemaLocation 反斜杠不允许将其声明为排除字符?

运行时xjc,架构编译得很好。但是我想用命令行参数指定一些绑定,-b bindings.xjb然后反斜杠成为一个问题,导致模式解析失败。

我该如何解决这个问题?我曾尝试使用目录来解析路径,但在使用目录之前它似乎失败了。

最小的工作示例

a.xsd

b.xsd

c.xjb

控制台输出

编辑:随着xjc -verbose我得到以下 StackTrace,说明 Java 的URI类符合标准并因此拒绝反斜杠是一个问题。

0 投票
0 回答
84 浏览

java - Marshall xsd:任何内容作为带有 JAXB 的字符串

我正在寻找以下问题的解决方案。

我有如下所示的 xml 内容:

节点“文本”可以包含任何 xhtml 元素。当将此 xml 编组为 java 类时,我需要此文本内容,因为它是一个字符串。

该元素的 XSD 如下所示:

JAXB 类生成生成以下内容:

目前 Text 元素的所有子元素都编组为List<Object>,需要再次解组才能将 xhtml 内容作为字符串。在我看来,这是浪费处理时间。

我想要的是,xhtml 文本内容只是作为一个字符串。像这样:

我已经为其他一些情况设置了一些 xjb 绑定和 XmlAdapter 并期望这也可以作为解决方案,但到目前为止我没有成功实现我想要的。

XML 文件无法更改,因为它已经是生产数据。XSD 和绑定在我的控制之下,并且可以更改。

有人有想法吗?

0 投票
0 回答
34 浏览

java - 用于两个类似命名元素的 JAXB XJB

我有关注xsd

正如你所看到的,我有两个 <xs:element name="object" ... /> 在那里不会在 java 中很好地翻译有两个具有相同名称的类。我正在尝试使用 xjb 来翻译它们

但是我最终得到

我想知道我在这里做错了什么,有人可以帮我解决吗?如何重命名 XJB 文件中的内部类?

0 投票
1 回答
71 浏览

java - JAXB - 当属性已经定义并使用绑定时,它不适用于 *complexContent*

使用 JAXB 生成 Java 类。我正在使用以下 XSD 方案。

..以及以下绑定定义

complextType MetaTypeSimpleContentsimpleContent的绑定工作正常。但是 complexType MetaTypeComplexContentcomplexContent的绑定没有。为什么?我收到以下错误:

0 投票
0 回答
287 浏览

java - org.xml.sax.SAXParseException: 'GovernmentIDType' 已定义

我试图从第三方提供的 XSD 生成 Java 类。但是我得到的错误是

[错误] 文件:/Users/sanket/eblock/code/eblock-graphql/eblock-integration/autotec-auction-access-sqs/src/main/resources/xsd/COMP9.xsd[243,16] org.xml。 sax.SAXParseException: 'GovernmentIDType' 已定义

对于其他元素,我也遇到了同样的错误。我尝试向 XSD 添加唯一的命名空间,但没有奏效。这个特定元素“GovernmentIDType”的定义在两个 XSD 中不同,但名称相似。

COMP9.xsd

人.xsd

pom.xml

我需要一些解决方案。

更新:我尝试按如下方式添加绑定文件,但仍然出现相同的错误:PER.xjb