Я использую компонент Primefaces <p:fileUpload>
для выбора файлов пользователями.В этом я использую атрибут fileUploadListener
, который использует пользовательский метод для чтения XML-файлов и их анализа с использованием DOMParser
.Мой код для чтения и анализа файлов сводится к следующему:
InputStream inputStream = new FileInputStream("C:\\test\\test_ansi.xml");
Reader inputStreamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
InputSource is = new InputSource(new BufferedReader(inputStreamReader));
DOMParser parser = new DOMParser();
parser.parse(is);
Document doc = parser.getDocument();
Мне нужно преобразовать все выбранные пользователем XML-файлы в UTF-8 перед дальнейшей их обработкой.Если я попробую приведенный выше код с файлом, закодированным как ANSI, он будет работать нормально.Но если файл закодирован как UTF-8, я получаю следующую ошибку:
oracle.xml.parser.v2.XMLParseException; lineNumber: 1; columnNumber: 1; Start of root element expected.
at oracle.xml.parser.v2.XMLError.flushErrors(XMLError.java:233)
at oracle.xml.parser.v2.XMLError.error(XMLError.java:133)
at oracle.xml.parser.v2.XMLError.error(XMLError.java:171)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:280)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:241)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:124)
Для образцов файлов UTF-8 я просто сохраняю файл с кодировкой UTF-8 в Блокноте,Может кто-нибудь, пожалуйста, помогите мне понять, что происходит не так?