xmlstreamwriter와 jaxb를 함께 사용하여 큰 xml 파일을 마샬링합니다. 내가 JAXB와 하위 트리를 만드는 오전하지만 난 그것을 다음과 같이 기본 네임 스페이스로 시작되는 하위 트리 마샬링 할 때이 문제는 다음과 같습니다XmlstreamWriter 및 Jaxb (서브 트리 없음) 네임 스페이스
<?xml version="1.0" encoding="UTF-8"?>
<MessageModel xmlns="urn:schemas.mycompany.com/ENT/MessageModel/2013/09/19">
<MessageHeader xmlns="" xmlns:ns2="urn:schemas.mycompany.com/ENT/MessageModel/2013/09/19">
<ns2:ProviderID>5922</ns2:ProviderID>
<ns2:EffectiveDT>2016-08-08-04:00</ns2:EffectiveDT>
<ns2:PartyCount>0</ns2:PartyCount>
<ns2:ArrangementCount>1</ns2:ArrangementCount>
<ns2:AppMetaDataString>ter</ns2:AppMetaDataString>
</MessageHeader>
</MessageModel>
내가 마샬링에 대한 코드 아래 사용하고을 :
StringWriter result = new StringWriter();
MessageHeaderType messageHeaderType = createMessageHeader(objectFactory);
JAXBElement<MessageHeaderType> element = new JAXBElement<MessageHeaderType>(new QName("MessageHeader"), MessageHeaderType.class, messageHeaderType);
XMLStreamWriter xmlOut = XMLOutputFactory.newFactory().createXMLStreamWriter(result);
**//Setting default namespace**
xmlOut.setDefaultNamespace("urn:schemas.mycompany.com/ENT/MessageModel/2013/09/19");
xmlOut.writeStartDocument();
xmlOut.writeStartElement("urn:schemas.mycompany.com/ENT/MessageModel/2013/09/19", "MessageModel");
xmlOut.writeNamespace("", "urn:schemas.mycompany.com/ENT/MessageModel/2013/09/19");
JAXBContext context = JAXBContext.newInstance(MessageHeaderType.class);
Marshaller marshaller = context.createMarshaller();
//marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
marshaller.marshal(element, xmlOut);
xmlOut.writeEndDocument();
xmlOut.close();
System.out.println(result.toString());
기본 네임 스페이스를 설정 중이지만 여전히 네임 스페이스가있는 하위 트리를 만듭니다. jaxb하지만 네임 스페이스없이 하위 트리를 생성하려면 어떻게해야합니까?