Я считал XML-файл и преобразовал в объект NSXMLDocument. Но, из-за присутствия" <" в строковом содержании узла, это было преобразовано в "<". Так, когда я пишу это как xml документ файлу, это имеет символ "<" в нем.
Как я могу записать в файл как обычный XML-файл, в котором "<" будет заменен" <".
Спасибо и наилучшие пожелания, Lenin
Когда символ <
появляется в текстовом узле, он будет сериализован как <
при записи xml в файл.
Когда вы позже прочитаете этот файл с помощью анализатора xml, текстовый узел будет содержать оригинальный символ <
.
У вас также есть возможность закодировать текстовый узел в CDATA. В этом случае сериализованный символ <
будет находиться внутри блока CDATA. Многие XML API не будут сохранять разницу между CDATA и текстовыми узлами. CDATA следует рассматривать как механизм экранирования, облегчающий редактирование для авторов-людей.
Символ <
должен быть экранирован, если он не является частью тега XML (см. здесь). Вам действительно не следует нарушать спецификацию XML...
Однако, если вы должны, вы можете сделать трюк перед написанием XML-документа:
<
уникальной строкой, которая не будет
(что-то, что, как вы знаете, не встречается больше нигде в файле).
Возможно, подойдет что-то вроде *-lt-*
. *-lt-*
на обычный <
символом. Опять же, это ужасная идея - нарушить спецификацию XML... сделав это, ни один парсер не сможет прочитать ваш новый XML-документ.
<
в текстовых узлах xml должен быть представлен как <
.
Если вы замените его на s/&</ перед записью в xml файл, это приведет к ошибке разбора при чтении из этого файла.
Для выполнения операции наоборот можно использовать следующие функции
htmlspecialchars и
htmlentities()