2

我正在尝试将对象编组为 XML,但名称空间前缀有问题(我不想有任何前缀)。

我正在使用 bindigs 文件来自定义生成的类。生成的 package-info.java 文件包含以下内容:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.test.com", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED, xmlns = {
@javax.xml.bind.annotation.XmlNs(namespaceURI = "http://www.test.com", prefix = "")})
package com.test;

所以,前缀设置为“”,但是当生成 XML 时,我有一个生成的前缀。如果我使用另一个值作为前缀(不同于空字符串),则会使用正确的前缀生成 XML。

4

2 回答 2

2

使用最新的 JAXB,您必须将 QUALIFIED 设置为 XmlSchema 注释的 elementFormDefault 字段。像这样:

@XmlSchema (
    elementFormDefault= XmlNsForm.QUALIFIED,
    ...)

否则,JAXB 将添加一个自动前缀 (ns1, ns2, ...)

于 2014-06-09T02:43:55.847 回答
0

您的JAXB (JSR-222)实现不保证它将使用@XmlSchema注释中指定的前缀。 EclipseLink JAXB (MOXy)将如此,最新版本的JAXB RI也将如此。

JAXB RI 提供了一个NamespacePrefixMapper扩展,现在 MOXy 支持该扩展,以更好地控制所使用的前缀。

了解更多信息

于 2012-10-09T13:34:27.913 回答