XmlReader прочитанный документ с unescaped & s - PullRequest
0 голосов
/ 04 августа 2010

Я пытаюсь проанализировать документ XMl, который я получил в строку из вызова веб-службы.

String content = ...;//long xml document
using(TextReader reader = new StringReader(content))
using(XmlReader xml_reader = XmlReader.Create(reader, settings))
{
    XML = new XPathDocument(xml_reader);
}

однако я получаю исключение:

An error occurred while parsing EntityName. Line 1, position 1721.

Я просмотрел документ вокруг этого символа, и он был в середине случайного тега, однако примерно на 20-30 символов раньшея заметил, что там были неэкранированные амперсанды (и символы), так что я думаю, что это проблема.

выполняется:

content.Substring(1700, 100);//results in the following text
"alue>1 time per day& with^honey~&water\\\\</Value></Frequency></Direction>          </Directions>     "
                    ^unescaped & char 1721 is the 'w'

как я могу успешно прочитать этот документ как xml?

1 Ответ

1 голос
/ 05 августа 2010

убедитесь, что ваша xml-кодировка соответствует их кодировке (верхняя часть документа, что-то вроде <?xml version="1.0" encoding="ISO-8859-9"?>).Замените значение из документа XML веб-службы на webserviceEncoding ниже

using(XmlReader r = XmlReader.Create(new StreamReader(fileName, Encoding.GetEncoding(webserviceEncoding)))) {
    XML = new XPathDocument( r );
    // ... 
}

Если это не сработает

  1. Замените его в строке дозагрузка в парсер xml
  2. Уведомить поставщика веб-сервиса
...