Недопустимые символы XML в пути



я запрашиваю службу на основе soap и хочу проанализировать возвращенный XML, однако, когда я пытаюсь загрузить XML в XDoc для запроса данных. я получаю сообщение об ошибке "незаконные символы в пути"? Это (ниже) XML, возвращенный из службы. Я просто хочу получить список соревнований и поместить их в список, который я настроил. XML загружается в XML-документ, хотя он должен быть правильно отформатирован?.



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



<?xml version="1.0" ?> 
- <gsmrs version="2.0" sport="soccer" lang="en" last_generated="2010-08-27 20:40:05">
- <method method_id="3" name="get_competitions">
<parameter name="area_id" value="1" />
<parameter name="authorized" value="yes" />
<parameter name="lang" value="en" />
</method>
<competition competition_id="11" name="2. Bundesliga" soccertype="default" teamtype="default" display_order="20" type="club" area_id="80" last_updated="2010-08-27 19:53:14" area_name="Germany" countrycode="DEU" />
</gsmrs>


вот мой код, мне нужно иметь возможность запрашивать данные в XDoc:



string theXml = myGSM.get_competitions("", "", 1, "en", "yes");
XmlDocument myDoc = new XmlDocument();
MyDoc.LoadXml(theXml);
XDocument xDoc = XDocument.Load(myDoc.InnerXml);
652   4  

4 ответов:

не показывать свой исходный код, однако, я думаю, что вы делаете это:

string xml = ... retrieve ...;
XmlDocument doc = new XmlDocument();
doc.Load(xml); // error thrown here

The Load метод ожидает a имя файла не сам XML. Чтобы загрузить фактический XML, просто используйте LoadXml способ:

... same code ...
doc.LoadXml(xml);

аналогично, используя XDocument the Load(string) метод ожидает a filename, не фактический XML. Однако, нет LoadXml метод, поэтому правильный способ загрузки XML из строки выглядит так это:

string xml = ... retrieve ...;
XDocument doc;
using (StringReader s = new StringReader(xml))
{
    doc = XDocument.Load(s);
}

на самом деле при разработке чего-либо, это очень хорошая идея, чтобы обратить внимание на семантика (значение) параметров не только их типов. Когда тип параметра -string это не значит, что можно кормить только то, что является строкой.

также в отношении вашего обновленного вопроса, нет смысла использовать XmlDocument и XDocument в то же время. Выберите один или другой.

после ответа Ondrej Tucny:

Если вы хотите использовать строку xml вместо этого, вы можете использовать XElement и вызвать метод "parse". (Так как для ваших нужд, XElement и XDocument будет отвечать вашим потребностям)

например:

string theXML = '... get something xml-ish...';
XElement xEle = XElement.Parse(theXML);

// do something with your XElement

метод синтаксического анализа XElement позволяет передавать XML-строку, в то время как метод Load нуждается в имени файла.

Если это действительно ваш вывод, он является незаконным XML из-за отрицательных символов (' -'). Я подозреваю, что вы вырезали и вставили это из браузера, такого как IE. Вы должны показать точный XML из текстового редактора, а не браузера.

почему бы и нет

XDocument.Parse(theXml);

Я предполагаю, что это будет правильным решением

Comments

    Ничего не найдено.