Не могу понять XMLNamespace в моем запросе Linq to XML - PullRequest
0 голосов
/ 29 февраля 2012

Формат XML из веб-сервиса:

<Data xmlns="http://www.mywebservice.com/schema/data">
  <Record>
       <PCI>
            <FNAME>Random</FNAME>
            <LNAME>Guy</LNAME>
            <BIO />
       </PCI>
  </Record>
</Data>

Мой запрос Linq-to-XML:

XNamespace xns = "http://www.mywebservice.com/schema/data";
var Records = from Record in userInfo.Descendants(userInfoNamespace + "Record")
        select new
        {
           fname = Record.Element(xns + "FNAME").Value,
        };

Этот запрос не выполнен. В режиме отладки я нажимаю «Записи», затем «Просмотр результатов», чтобы увидеть, содержит ли он что-либо. Он просто дает мне ссылку на объект, не установленную для экземпляра объекта

если я сделаю это:

select new
{
    Record,
}

all просто возвращает все xml, поэтому я знаю, что метод Descendants правильно читает xml

Я искал ответы, но не могу выяснить, что происходит. Спасибо за помощь!

1 Ответ

1 голос
/ 29 февраля 2012

Я думаю, проблема в том, что вы ищете FNAME, используя Element, когда это элемент PCI, а не Record.Либо используйте Descendant, либо найдите его как Element из PCI.

Кроме того, похоже, что userinfoNamespace и xns должны быть "http://www.mywebservice.com/schema/data" для правильной работы.Вам может понадобиться только одна из этих переменных.

...