2013-07-15 3 views
1

Я использую следующий код, чтобы сделать демаршаллинг:маршалом объект в XML и удалить XMLNS

 @Override 
public String marshal(Object document) throws JAXBException { 

    Class clazz = document.getClass(); 
    JAXBContext context = 
     JAXBContext.newInstance(clazz.getPackage().getName()); 
    Marshaller marshaller = context.createMarshaller(); 
    marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 
    StringWriter sw = new StringWriter(); 
    marshaller.marshal(document, sw); 
    String xml = sw.toString(); 
    return xml; 

} 

Результат таков:

<IlpQuoteInput QuoteId="2888284000185" xmlns="http://www.abc.com"> 
<Common IlpSellerId="0001"> 
    <Quotation QuotationDt="20130711"/> 
    <Product CurrencyCd="E"> 
etc etc 

Это все хорошо, но я на самом деле не хочу чтобы иметь xmlns в выходе, что мне делать? Спасибо PS Я использую последнюю версию JAXB и Java 6.

ответ

1

В ваших отображениях вы, скорее всего, поставили @XmlSchema аннотации на пакет-инфо класс, который выглядит примерно так:

@XmlSchema(
    namespace = "http://www.abc.com", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package example; 

import javax.xml.bind.annotation.XmlNsForm; 
import javax.xml.bind.annotation.XmlSchema; 

Чтобы удалить квалификацию пространства имен из выходных данных XML, вы можете просто удалить метаданные, которые вы ввели, чтобы это произошло в первую очередь, предполагая, что это то, что вы хотите сделать.

Для получения более подробной информации

Смежные вопросы