2009-08-17 3 views
0

j'ai donc ce simple texte XML:LINQ 2 XML: Simple entrée, péter le cerveau avec la solution

<errors xmlns="http://schemas.google.com/g/2005"> 
    <error> 
    <domain>GData</domain> 
    <code>InvalidRequestUriException</code> 
    <internalReason>You must specify at least one metric</internalReason> 
    </error> 
</errors> 

Ce que la façon la plus simple d'extraire la valeur de l'élément internalReason?

Répondre

6

Vous devez spécifier l'espace de nom lors de la recherche de descendants. Par exemple:

var xml = XElement.Load("test.xml"); 
XNamespace ns = "http://schemas.google.com/g/2005"; 
var reason = xml.Descendants(ns + "internalReason").First().Value; 

Ou:

var xml = XElement.Load("test.xml"); 
XNamespace ns = "http://schemas.google.com/g/2005"; 
var reason = xml.Elements(ns + "error").First() 
       .Elements(ns + "internalReason").First().Value; 

(. Je ne suis pas désireux d'utiliser les expressions de requête quand ils ne fournissent pas vraiment de valeur ajoutée)

Vous pouvez également divisez-le et utilisez FirstOrDefault afin que vous puissiez vérifier si les éléments que vous demandez sont présents ou non.

+0

Ouais, c'était l'espace de noms. Merci. –