2012-10-09 5 views
1

개체를 XML로 마샬링하려고하는데 네임 스페이스 접두어에 문제가 있습니다. 접두어를 사용하고 싶지 않습니다.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이 올바른 접두어로 생성됩니다.

답변

0

JAXB (JSR-222) 구현은 @XmlSchema 주석에 지정된 접두사를 사용할 것이라고 보장하지 않습니다. EclipseLink JAXB (MOXy)은 최신 버전의 JAXB RI입니다.

JAXB RI는 NamespacePrefixMapper 확장을 제공합니다.이 확장은 현재 MOXy에서 지원되는 접두어를보다 잘 제어 할 수 있도록 지원합니다. 추가 정보

최신 JAXB와

+0

자동 접두사 (NS1, NS2, ...)를 추가 할 것입니다하지만 난 그게 바인딩 만 해결 될 수있다 희망 한 . – ovi2ut

+0

@ ovi2ut - 필자는 EclipseLink MOXy와 최근 버전의 JAXB RI가'@XmlSchema' 주석에 지정된 접두사를 사용할 것이라고 말했다. –

1

, 당신은에 XmlSchema 주석의 elementFormDefault 필드 자격을 설정해야합니다. 이처럼 : 그렇지 않으면

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

, JAXB는 내가 전에이 옵션에 대해 읽은

관련 문제