2013-02-11 20 views
1

XMLMapper를 사용하여 일부 구성 클래스를 XML 구성 파일에 직렬화하려고합니다. 하지만 속성 생성에 약간의 문제가 있습니다. 사실 생성 된 XML은 완벽하지만 XMLMapper는 때때로 속성 이름에 접두사를 추가합니다.XMLWriter는 zdef로 속성 이름을 확장합니까?

<Config zdef-2031720317:value="0"> 

대신

<Config value="0"> 

의 내가 더 이상 XOM으로 나중에 XML 구조를 처리 할 수 ​​있기 때문에 :(이것은 정말 나쁜

이미 발견

이 효과는? 에서오고있다 사실 XML 생성기가 특성을 고유하게 만들기 위해 네임 스페이스를 자동 수정하는 것 같습니다. 왜 이것이 필요하며 어떻게 피할 수 있습니까?

답변

5

종종 XmlMapper에서 문제를 일으킨 한 가지는 XML Stax 라이브러리입니다. JDK에 포함 된 라이브러리는 불필요한 네임 스페이스 접두사를 추가하는 경우가 있습니다. 솔루션은 일반적으로 더 잘 작동하는 것으로 알려져 있으므로이 특정 경우에도 Woodstox Stax 구현을 대신 사용해야합니다.

<dependency> 
    <groupId>org.codehaus.woodstox</groupId> 
    <artifactId>woodstox-core-asl</artifactId> 
    <version>4.1.4</version> 
</dependency> 

을하고 문제가 해결 될 수있다

당신은 메이븐을 사용하는 경우, 당신은 당신의 pom.xml이를 추가 할 수 있습니다. 보너스로 XML 파서도 빠릅니다.

+0

당신은 전설입니다! 모든 작품은 현재 예상대로! 감사합니다 =) – Divine

3

woodstox가 아닌 대답을 찾는 사람들에게. 이것은 나를위한 속임수를했습니다 :

xmlMapper.getFactory().getXMLOutputFactory().setProperty("javax.xml.stream.isRepairingNamespaces", false);