Написание XML в различных кодировках символов с помощью Java - PullRequest
3 голосов
/ 29 мая 2010

Я пытаюсь записать файл библиотеки XML, который можно снова прочитать в моей программе.

Код файла записи выглядит следующим образом:

XMLBuilder builder = new XMLBuilder();
Document doc = builder.build(bookList);
DOMImplementation impl = doc.getImplementation();
DOMImplementationLS implLS = (DOMImplementationLS) impl.getFeature("LS", "3.0");
LSSerializer ser = implLS.createLSSerializer();
String out = ser.writeToString(doc);

//System.out.println(out);

try{
    FileWriter fstream = new FileWriter(location);
    BufferedWriter outwrite = new BufferedWriter(fstream);
    outwrite.write(out);
    outwrite.close();
}catch (Exception e){
}

Приведенный выше код создает документ XML.

Однако в заголовке XML это атрибут, который файл кодирует в UTF-16.

когда я читаю в файле, я получаю сообщение об ошибке:

"содержание не разрешено в прологе"

эта ошибка не возникает, когда атрибут кодирования вручную изменяется на UTF-8.

Я пытаюсь заставить приведенный выше код написать XML-документ, закодированный в UTF-8, или успешно проанализировать файл UTF-16.

код для разбора в

DocumentBuilderFactory factory = 
DocumentBuilderFactory.newInstance();
DocumentBuilder loader = factory.newDocumentBuilder();
Document document = loader.parse(filename);

последняя строка возвращает ошибку.

1 Ответ

2 голосов
/ 29 мая 2010

метод writeToString LSSerializer не позволяет Сериализатору выбирать кодировку.

с методом setEncoding экземпляра LSOutput, метод записи LSSerializer может использоваться для изменения кодировки. LSOutput CharacterStream может быть установлен на экземпляр BufferedWriter, так что вызовы из LSSerializer для записи будут записывать в файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...