Как JAXB может обрабатывать строку (XML), начинающуюся со спецификации? Есть ли свойство для установки или какая-либо конфигурация для пропуска спецификации при десортировке? Существуют ли другие реализации JAXB, которые могли бы сделать это помимо реализации Oracle?
Обработка спецификации в демаршаллере JAXB
Ответы (1)
Если вы имеете в виду файл UTF-8 со спецификацией, вам придется пропустить его самостоятельно. Довольно просто придумать класс InputStream, который проверяет первые два байта на наличие спецификации, пропускает их и иным образом заключает в себе другой InputStream. Это было задокументировано в этом ответе SO и откройте исходный код для этой цели доступен на GitHub.
Если вы имеете в виду какую-то другую кодировку, такую как UTF-16, JRE должна прочитать спецификацию из потока UTF-16 и отбросить ее сама.
person
dcsohl
schedule
26.01.2015
У меня есть строка, представляющая собой xml-контент, что-то вроде этого '‹?xml version=1.0 encoding=utf-8?› ....', и я создаю StringReader для чтения содержимого в unmarshaller следующим образом: unmarshaller.unmarshal( новый StringReader (xml)); но строка начинается с спецификации, и здесь возникла проблема после сбоя процесса десортировки, я подумал, что у JAXB есть какое-то свойство для настройки и самостоятельной обработки символа спецификации без каких-либо изменений с моей стороны.
- person srncristea; 26.01.2015
Нет, вам все равно придется делать это самостоятельно, к сожалению. Могу ли я также обратить ваше внимание на проект Apache Commons IO, особенно на BOMInputStream и/или XmlStreamReader?
- person dcsohl; 26.01.2015
да, мне нужно взглянуть на эти классы, большое спасибо за вашу помощь;).
- person srncristea; 27.01.2015