JAXP 및 Xerces2에서 로케일 특정 오류 메시지를 사용하려고합니다. 기본적으로 영어 메시지 만 사용할 수 있습니다.Xerces 2.11.0의 로케일 특정 메시지 (Java)
첫 번째 단계는 메시지 파일을 검색하여 "org/apache/xerces/impl/msg /"패키지에 넣는 것입니다. Locale.setDefault (Locale.GERMANY)
을 사용하면 독일어 메시지가 표시되므로 이것이 작동합니다.
하지만 메시지를 인스턴스별로 다르게 현지화하고 싶습니다. 따라서 한 파서는 영어 메시지를 반환하고 다른 파서는 독일어 메시지를 반환해야합니다.
는내가 SAX2 파서를 만드는 데 사용하고 코드는 다음과 같습니다
DOM에 대한org.xml.sax.XMLReader ret = XMLReaderFactory.createXMLReader();
나는 DocumentBuilder를 사용하고이 (매우 간단) 추천했습니다 :
final DocumentBuilderFactory aDocumentBuilderFactory = DocumentBuilderFactory.newInstance();
final DocumentBuilder aDocBuilder = aDocBuilderFactory.newDocumentBuilder();
final Document doc = aDocumentBuilder.parse (aInputSource);
내가 같은 것을 발견 setLocale(Locale)
메서드가있는 org.apache.xerces.impl.XMLErrorReporter
클래스를 가져 왔지만 가져 오거나 설정할 수있는 방법을 찾지 못했습니다.
SAX1로 전환하는 것은 옵션이 아닙니다.
도움을 주시면 감사하겠습니다.
감사합니다 - 이것은 내가 찾고 있었던 것이 었습니다! –
참고 : 영어 유효성 검사 메시지를 강제로 표시하려면 빈 Locale 객체를 입력해야 할 수 있습니다. 이것은 JRE에 XMLMessage_en.properties가 포함되어 있지 않기 때문에 기본 로케일 세트 (필자의 경우 독일어 또는 프랑스어)가 포함 된 번들로 잘 해석되도록 시도하기 때문입니다. 빈 Locale를 사용하면 (자) JRE에 영어 property가 포함 된 basename를 사용해 ResourceBundle기구를 강제합니다. – beat
XSD 유효성 검사를 사용할 때 유사한 문제가 발생하여 작은 메모가 발생했습니다. 'Validator' 인스턴스가 있으면'validator.setProperty ("http://apache.org/xml/properties/locale", Locale.FRANCE); - 그러나 "en"언어이지만 영어가 아닌 기본 로케일을 가진 로케일을 가지고 있다면 조심하십시오 - 영어 메시지를 시행하기 위해'Locale.ROOT'를 사용하십시오! –