2010-08-13 5 views
0

Je suis assez nouveau à Linq et j'essaie d'écrire une requête simple pour retourner les messages d'erreur dans mon fichier xml.Requête avec Linq à xml

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

Les travaux suivants et renvoie le message d'erreur:

 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 

mais ce qui suit ne fonctionne pas et renvoie aucun résultat:

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

Je suis juste essayer de mieux comprendre de Linq mais quelqu'un peut-il me dire pourquoi le dernier ne fonctionne pas comme devraient-ils tous deux ne pas retourner le même résultat?

Merci à l'avance

Répondre

1

L'écriture .<Error> fait un appel à la méthode des éléments, donc lorsque vous appelez err.Elements.<Message> vous faites err.Elements.Elements("Message") et obtenir les enfants des enfants de err au lieu de seulement ses enfants. Supprimez simplement les appels supplémentaires aux descendants et aux éléments. Vous aurez besoin d'utiliser ... au lieu de . si vous voulez des descendants de chargement au lieu de seulement les enfants.

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

Merci Quartermeister parfait – fedor333