2015-01-26 2 views
0

JAXB는 BOM으로 시작하는 문자열 (XML)을 어떻게 처리 할 수 ​​있습니까? 설정을위한 속성이나 언 마샬링 할 때 BOM을 건너 뛰기위한 설정이 있습니까? 오라클 구현 이외에도 JAXB 구현이 가능합니까?JAXB unmarshaller의 BOM 처리

답변

1

BOM이있는 UTF-8 파일을 참조하는 경우 직접 건너 뛰어야합니다. BOM의 처음 두 바이트를 검사하고 건너 뛰거나 다른 InputStream을 감싸는 InputStream 클래스를 만드는 것은 매우 간단합니다. 이것은 this SO answer에 문서화되어 있으며이 목적을위한 오픈 소스 코드는 from GitHub입니다.

UTF-16과 같은 다른 인코딩을 말하는 경우 JRE는 UTF-16 스트림에서 BOM을 읽고 자체적으로 삭제해야합니다.

+0

나는 ''과 같은 XML 내용의 문자열을 가지고 있으며, unmarshaller에 내용을 읽는 StringReader를 만듭니다. 다음과 같이하십시오 : unmarshaller.unmarshal (new StringReader (xml)); 하지만 BOM으로 시작하는 문자열은 unmarshalling 프로세스 충돌 이후 문제가 발생했습니다. JAXB는 BOM char을 자체적으로 설정하고 처리 할 수있는 속성이 있다고 생각했습니다. – srncristea

+0

아니요, 슬프게도 혼자 힘으로해야합니다. 또한 [Apache Commons IO] (http://commons.apache.org/proper/commons-io/) 프로젝트, 특히 [BOMInputStream] (http://commons.apache.org/proper /commons-io/javadocs/api-release/index.html?org/apache/commons/io/input/BOMInputStream.html) 및/또는 [XmlStreamReader] (http://commons.apache.org/proper/commons -io/javadocs/api-release/index.html? org/apache/commons/io/input/XmlStreamReader.html) classes? – dcsohl

+0

예, 그 수업을 살펴보아야합니다. 도움을 많이 주셔서 감사합니다.). – srncristea