Как проанализировать XML с несколькими пространствами имен по умолчанию? - PullRequest
1 голос
/ 22 марта 2010

Вот мой XML-ответ:

 <DIDL-Lite
xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/" 
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/"
<item id="1182" parentID="40" restricted="1">
<title>Hot Issue</title>
</item>
</DIDL-Lite>

Когда я пытаюсь проанализировать его с помощью xELemnt и попытаться присвоить переменную, как показано ниже:

   var vnyData = from xmyResponse in xResponse.Descendants("DIDL-Lite").Elements("item")
select new myClass
                                     {strTitle = ((string)xmyResponse .Element("title")).Trim()};

Это ничего не даетРезультаты.

Спасибо, Субхенду

Ответы [ 2 ]

1 голос
/ 22 марта 2010

Если в документе есть пространство имен по умолчанию, вы должны проанализировать его, как если бы оно было именованным пространством имен. Например.

XNamespace ns = "urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/";

var xDIDL = xResponse.Element(ns + "DIDL-Lite");

Какое бы имя вы ни назвали, переменная ns не имеет значения. Ключ в том, что где бы вы ни передавали имя элемента (если быть точным, XName), вам необходимо включить пространство имен + имя. Вы заметите, что строка может быть преобразована в XNamespace, но вы также можете использовать ее конструктор.

0 голосов
/ 22 марта 2010

Вы используете свою XML-схему, которая должна присутствовать в именах элементов, к которым вы пытаетесь получить доступ. Проверить XNamespace класс.

...