XmlDocument отбрасывает закодированные символы - PullRequest
1 голос
/ 19 января 2009

Приложение My C # загружает документы XML, используя следующий код:

XmlDocument doc = new XmlDocument();
doc.Load(path);

Некоторые из этих документов содержат закодированные символы, например:

<xsl:text>&#10;</xsl:text>

Я замечаю, что при загрузке этих документов &#10; удаляется.

Мой вопрос: как мне сохранить <xsl:text>&#10;</xsl:text>?

FYI - декларация XML, используемая для этих документов:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Ответы [ 3 ]

2 голосов
/ 19 января 2009

Вы уверены, что персонаж выпал? символ 10 - это просто перевод строки - он точно не будет отображаться в вашем окне отладчика. Это также может рассматриваться как пробел. Вы пробовали играть с настройками пробелов в xmldocument?


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

Простой текст, а не Xml, вероятно, также неприятен, но это все, что у вас осталось. Если вам нужно выполнить проверку или другую обработку, вы можете сначала загрузить и проверить xml, а затем объединить ваши файлы с помощью простых файловых потоков в качестве отдельного шага. Опять же: не идеально, но это все, что осталось.

1 голос
/ 19 января 2009

&#10; - это перевод строки, то есть пробел. Синтаксический анализатор XML загрузит его в качестве перевода строки, а затем проигнорирует тот факт, что он был изначально закодирован. Кодировка является лишь частью сериализации данных в текстовый формат - она ​​не является частью самих данных.

Теперь XML иногда игнорирует пробелы, а иногда нет, в зависимости от контекста, API и т. Д. Как говорит Джоэл, вы можете обнаружить, что он вообще не пропущен - или вы можете обнаружить, что используя его с API, который позволяет вам сохранять Пробел решает проблему. Я бы не стал вообще удивлен, увидев, что он превратился в некодированный символ перевода строки при выводе данных.

0 голосов
/ 19 января 2009

может быть, было бы лучше сохранить данные! [CDATA]?

http://www.w3schools.com/XML/xml_cdata.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...