JAXB Marshaller - Как подавить атрибуты пространства имен xmlns? - PullRequest
2 голосов
/ 22 марта 2012

Я генерирую XML, используя JAXB2 для автономного Java-приложения, которое использует схемы maven 3, jaxb2, FIXML и maven-jaxb2-plugin.Когда я выполняю маршалинг XML, в корневом элементе вывода есть атрибуты xmlns.Как мне удалить это?

С:

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

Кому:

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

Редактировать:

package-info.java

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

Ответы [ 3 ]

1 голос
/ 23 марта 2012

Поэтому, если вы не хотите, чтобы информация о пространстве имен включалась, вы можете просто удалить аннотацию @XmlSchema из package-info.java.

Это несколько нарушает вашу автоматическую сборку, хотя, как вы сказали, она автоматически генерируется из плагина maven.

Предлагаем вам взглянуть на параметры плагина, чтобы увидеть, можете ли вы удалить его из вывода, или вам придется использовать некоторые дополнительные плагины для удаления этой строки, или просто удалить package-info.java все вместе. *

Вопрос - собираетесь ли вы передавать этот XML в службу, которая ожидает включения информации о пространстве имен? Думаю, мне интересно, почему вы хотите удалить информацию о пространстве имен.

0 голосов
/ 02 октября 2013

Для автоматизации процесса вы можете просто удалить атрибут targetNamespace из исходного файла xsd

0 голосов
/ 23 марта 2012

На данный момент проблема решена путем удаления всех ссылок на пространство имен "http://www.fixprotocol.org/FIXML-4-4" из сгенерированного кода jaxb2. Это неочевидно. Я надеялся на более автоматизированный способ.

...