При чтении и переписывании XML в Java существует ли систематический способ сохранения инструкции обработки? - PullRequest
0 голосов
/ 03 сентября 2018

Я хочу обновить XML, но сохранить исходную инструкцию обработки, в большинстве случаев это просто:

<?xml version="1.0" encoding="UTF-8"?>

Однако я не могу найти способ извлечь строку из com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.JAXPSAXParser (и другого средства чтения XML) или как автоматически перенести ее на запись. Есть ли другой способ, кроме как вручную прочитать строку, сохранить ее, а затем написать ее, прежде чем записывать новый XML?

1 Ответ

0 голосов
/ 04 сентября 2018

Это правильное имя - декларация XML; это похоже на инструкцию по обработке, но технически это не так.

Парсинг неизменно включает в себя декодирование файла (то есть преобразование октетов в символы); как только это будет сделано, теория уйдет, приложение не должно знать, как они были изначально закодированы. Аналогично, при сериализации файла приложение должно сообщить сериализатору, какую кодировку использовать, и затем сериализатор берет на себя ответственность за написание декларации XML, отражающей эту кодировку.

Разрешение приложению контроля над объявлением XML нарушит надлежащую архитектурную иерархию и создаст возможность написания неверной декларации XML. Этот бит содержимого принадлежит слою синтаксического анализатора, а не прикладному уровню.

Конечно, на практике можно получить декларацию XML, которая в любом случае не соответствует фактической кодировке, потому что ничто не мешает вам писать декларацию XML с помощью программного обеспечения, которое ничего не знает о XML. Люди делают это и создают испорченный контент, а затем спрашивают нас в StackOverflow, как это исправить. Я не собираюсь вас подбадривать по этому маршруту.

...