Класс XmlDocument не может загрузить файл, содержащий узел с кодом C # - PullRequest
0 голосов
/ 27 января 2012

У меня есть XML-файл с узлом, который содержит некоторый код C #.

<Script Name="WrapText">
        var sb = new System.Text.StringBuilder();
        int lastSpaceIndex = 0;

            for(int i = 0; i < paragraph.length; i++)
            {
                var curChar = paragraph[i];
                sb.Append(curChar);

                if (System.Char.IsWhiteSpace(curChar))
                {
                    lastSpaceIndex = i;
                }

                if (i % splitlength == 0)
                {
                    if (lastSpaceIndex != 0)
                    {
                        sb[lastSpaceIndex] = '\n';
                    }
                }
            }

        return sb.ToString();
</Script>

когда я пытаюсь загрузить это, используя классы XmlDocument и XmlReader в C #, вот так:

    XmlReader xReader = XmlReader.Create(new MemoryStream(ASCIIEncoding.UTF8.GetBytes(imml)),  _ReaderSettings);
    XmlDocument xDoc = new XmlDocument();
    xDoc.Load(xReader);

Я получаю эту ошибку:

    Name cannot begin with the ' ' character, hexadecimal value 0x20. Line 25, position 21.

Если я удаляю строку цикла for, она без проблем загружает файл.

Почему это происходит?

1 Ответ

3 голосов
/ 27 января 2012

Создание XML вручную / с конкатенацией строк всегда вызывает такие проблемы: вы < неправильно закодированы и как результат < paragraph.length; i++)... обрабатывается как имя элемента.

Вы должны закодировать все специальные символы, как требуется. (т.е. &lt; для <). См. http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references для компактного списка.

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