Кодирование символов перевода строки в значении атрибута NSXMLElement
Поле комментариев базы данных XML, которую я читаю и пишу, хранится как атрибут NSXMLElement. Одна запись содержит символ перевода строки (0x0a). Они кодируются не кодером NSXML в документе, который я анализирую как 

и получить правильный анализ NSXML. Они приводят к тому, что строка NSString содержит в памяти значение Юникода 0x0a 0x00 (порядок байтов Intel).
Например:
<INFO BITRATE="192000" GENRE="Podcast" COMMENT="Test & More Test 

After the Line Feeds"</INFO>
При записи этой NSString обратно в качестве значения атрибута NSXMLElement она не возвращается обратно и приводит к следующему выводу в файл xml:
<INFO BITRATE="192000" GENRE="Podcast" COMMENT="Test & More Test
After the Line Feeds"</INFO>
что, конечно, не анализируется должным образом при повторном чтении файла.
Кажется, что параметры узла, такие как NSXMLNodePreserveCharacterReferences
или же NSXMLNodePreserveEntities
Должен быть путь, но это никак не поможет.
Должно быть, я упускаю очевидное, но я застрял на этом весь день.
2 ответа
Проверено в Apple, это известная проблема с NSXMLDocument, и теперь она была подана как отчет об ошибке.
Предложенный обходной путь включает использование libxml2 в настоящее время.
Я опубликую комментарий, если увижу, что это исправлено в следующем выпуске.
Apple говорит:
Опции с "Preserve" в их именах применимы только при анализе внешних источников XML; они не влияют на объекты узлов, которые создаются программно. Другие параметры используются в методах инициализации и вывода NSXMLDocument; см. справочную документацию NSXMLDocument для деталей. Это не работает для меня, я думаю, что это ошибка.
Я решил эту проблему с KissXML.