Проблема с XmlReader
От: _agg  
Дата: 07.04.20 03:21
Оценка:
Всем привет, возникла проблема чтения с помощью XmlReader, метод из DLL возвращает XML вот такого вида:
<result>
<command>OpenShift</command>
<parameters params="1">
<p1 type="string">&LT;errorCode&GT;115&LT;/errorCode&GT;&LT;description&GT;openShift возвратил 115. Команда не поддерживается в данном режиме
Открытая смена; 24 часа кончились&LT;/description&GT;</p1>
</parameters>
</result>

Во время парсинга XML когда парсер доходит до значения начинающегося с "&LT;errorCode&GT;115&LT;" возникает исключение с вот таким сообщением:
"Ссылка на необъявленный объект подстановки "LT"., строка 1, позиция 79."

Всячески перепробовал XmlReader настроить типа:
 public bool ParseCall(string in_xml, ref CALL call, ref string error_message)
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.DtdProcessing = DtdProcessing.Ignore;
            settings.ValidationType = ValidationType.None;
            settings.ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags.None;
            settings.CheckCharacters = false;
            XmlReader xmlReader = XmlReader.Create(new StringReader(in_xml), settings);
...

Но это к сожалению не помогает. Этой же библиотекой пользуется и ПО написанное на C++ с использованием IXmlReader и там такого эффекта не возникает.

Подскажите пожалуйста кто знает/сталкивался с подобным и как такое решить?
Re: Проблема с XmlReader
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.04.20 04:01
Оценка: 10 (1) +1
Здравствуйте, _agg, Вы писали:

_>Всем привет, возникла проблема чтения с помощью XmlReader, метод из DLL возвращает XML вот такого вида:

_><result>
_> <command>OpenShift</command>
_> <parameters params="1">
_> <p1 type="string">&LT;errorCode&GT;115&LT;/errorCode&GT;&LT;description&GT;openShift возвратил 115. Команда не поддерживается в данном режиме
_>Открытая смена; 24 часа кончились&LT;/description&GT;</p1>
_> </parameters>
_></result>

_>Во время парсинга XML когда парсер доходит до значения начинающегося с "&LT;errorCode&GT;115&LT;" возникает исключение с вот таким сообщением:

_>"Ссылка на необъявленный объект подстановки "LT"., строка 1, позиция 79."
Если я правильно понимаю, то проблема — в case-sensitivity. Попробуйте руками скормить ему тот же код, только с &lt;errorCode&gt;115 и так далее.
_>Подскажите пожалуйста кто знает/сталкивался с подобным и как такое решить?
Если я угадал, то правильный способ — скормить ему рукопашный DTD. Простой способ — перед вызовом XmlReader перевести все entity в lowercase.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Проблема с XmlReader
От: _agg  
Дата: 07.04.20 04:25
Оценка:
Здравствуйте, Sinclair, Вы писали:

Спасибо тебе большое, ToLower строке для парсинга реально помогло, рукопашный DTD попробую реализовать все таки что бы прям все по правильному было.

_>>Во время парсинга XML когда парсер доходит до значения начинающегося с "&LT;errorCode&GT;115&LT;" возникает исключение с вот таким сообщением:

_>>"Ссылка на необъявленный объект подстановки "LT"., строка 1, позиция 79."
S>Если я правильно понимаю, то проблема — в case-sensitivity. Попробуйте руками скормить ему тот же код, только с &lt;errorCode&gt;115 и так далее.
_>>Подскажите пожалуйста кто знает/сталкивался с подобным и как такое решить?
S>Если я угадал, то правильный способ — скормить ему рукопашный DTD. Простой способ — перед вызовом XmlReader перевести все entity в lowercase.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.