2010-08-13 2 views
0

Я очень не знаком с Linq, и я пытаюсь написать простой запрос, чтобы возвращать сообщения об ошибках в моем XML-файле.Query with Linq to xml

<?xml version="1.0" encoding="utf-8"?> 
<Error xmlns="urn:xxxxx"> 
      The following errors were detected: 
      <Message>Internal Error</Message></Error> 

следующие работы и возвращает сообщение об ошибке:

 Dim loaded As XDocument = XDocument.Parse(strReturn) 
    Dim ns As XNamespace = "urn:xxxxx" 
    Dim errors = From err In loaded.Descendants(ns + "Error") _ 
            Select err.Elements(ns + "Message").Value 

но следующий не делает и не возвращает никаких результатов:

Imports <xmlns="urn:xxxxx"> 
Dim loaded As XDocument = XDocument.Parse(strReturn) 
Dim errors = From err In loaded.Descendants.<Error> _ 
           Select err.Elements.<Message>.Value 

Я просто пытаюсь, чтобы лучше понять из Linq, но может кто-то сказать мне, почему позже не работает, так как они оба не вернут тот же результат?

Заранее спасибо

ответ

1

Запись .<Error> делает вызов метода элементов, поэтому при вызове err.Elements.<Message> вы делаете err.Elements.Elements("Message") и получать дети детей ERR, а не только своих детей. Просто удалите дополнительные призывы к потомкам и элементам. Вам нужно будет использовать ... вместо ., если вы хотите, чтобы потомки загружались, а не просто дети.

Dim errors = From err In loaded...<Error> _ 
      Select err.<Message>.Value 
+0

Thanks Quartermeister perfect – fedor333