2

我使用 JAXB2 为使用 maven 3、jaxb2、FIXML 模式和 maven-jaxb2-plugin 的独立 Java 应用程序生成 XML。当我编组 XML 时,输出根元素中包含 xmlns 属性。我该如何删除这个?

从:

<root ... xmlns="http://www.fixprotocol.org/FIXML-4-4">...</root>

到:

<root ... >...</root>

编辑:

包信息.java

@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.fixprotocol.org/FIXML-4-4", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.package;
4

3 回答 3

1

因此,如果您不希望包含命名空间信息,您可以@XmlSchemapackage-info.java.

尽管正如您所说,这是从 maven 插件自动生成的,但这在某种程度上破坏了您的自动构建。

建议您查看插件选项,看看您是否可以从输出中删除它,或者您必须使用一些额外的插件来删除这一行,或者只是一起删除 package-info.java。

问题 - 您是否要将此 XML 传递给期望包含命名空间信息的服务?我想我对你为什么要剥离命名空间信息感兴趣。

于 2012-03-22T20:42:45.370 回答
0

通过从生成的 jaxb2 代码中删除对命名空间“http://www.fixprotocol.org/FIXML-4-4”的所有引用,该问题现在得到了解决。这是粗制滥造的。我希望有一种更自动化的方式。

于 2012-03-23T14:09:01.137 回答
0

为了使该过程自动化,您只需从源 xsd 文件中删除属性targetNamespace

于 2013-10-02T18:49:10.820 回答