У меня есть файл в формате XML (состоит только из начального и конечного тегов корня и дочерних элементов корня). Текстовые элементы детей содержат символ амперсанда &. В XML не разрешено иметь этот символ для того, чтобы документ был действительным, и когда я попытался обработать файл, используя DOM API в Java и синтаксический анализатор XML, я получил ошибки синтаксического анализа. Поэтому я заменил & на &
и успешно обработал файл: мне пришлось извлечь значения текстовых элементов в разные текстовые файлы.
Когда я открывал эти вновь созданные текстовые файлы, я ожидал увидеть &
, но вместо этого было &. Почему это? Я сохранил текст в текстовых файлах без какого-либо расширения (у моего исходного файла в формате XML также не было расширения .xml), и у меня есть только & в тексте нового файла, независимо от того, как я открываю файл: в виде TXT или XML-файла (это некоторые параметры в моем редакторе XML). Что именно происходит? Java (?) Конвертирует &
в & автоматически? Или есть какая-то кодировка по умолчанию? Ну, &
означает &, и я полагаю, что есть некое "невидимое" автоматическое преобразование, но я не понимаю, когда и как это происходит. Вот примеры моего исходного файла и извлеченного файла, который я получаю после обработки исходного файла с помощью Java:
Это мой файл "absolute.review" в формате XML:
<review>
<review_text>
I will not wear it as it is too big & looks funny on me.
</review_text>
</review>
Это мой извлеченный файл "absolute_1":
I will not wear it as it is too big & looks funny on me.
Для меня важно иметь исходные данные такими, какие они есть (без каких-либо преобразований / замен), поэтому я подумал, что мне нужно обработать извлеченный файл «вывод_1», преобразовав обратно &
в &. Как видите, мне кажется, мне не нужно этого делать. Но я не понимаю, почему :(.
Заранее спасибо!