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