2009-07-08 3 views

Répondre

2

Voici comment vous pouvez exprimer votre requête en utilisant LINQ to XML:

XDocument doc = XDocument.Parse("<Data><Rows><Row><Field Name=\"title\">Mr</Field><Field Name=\"surname\">Doe</Field></Row></Rows></Data>"); 
string[] matches = (from e in doc.Descendants("Field") 
        where (string)e.Attribute("Name") == "surname" 
        select (string)e).ToArray(); 
1

En fait, vous essayez de faire une chose XML-to-Linq ici. Linq to XML est plus destiné à créer une structure XML à partir d'objets à travers Linq.

Puisque vous avez un fichier XML, vous pouvez utiliser quelque chose comme ceci:

 XmlDocument xml = new XmlDocument(); 
     xml.LoadXml(Content); 
     string Surname = xml.SelectSingleNode("//Field/[@Name='surname']").Value.ToString(); 

Dans une autre utilisation, pour obtenir des données à partir de XML, utilisez XPath à la place.

+0

Je crois que LINQ to XML est très bien conçu pour être une alternative à XPath, offrant un soutien fortement typé et une syntaxe de requête plus intuitive . –

+1

LINQ to XML ajoute une autre couche au-dessus du XML. Fondamentalement, ce qu'il fait est de traduire votre requête en constructions XPath. En regardant l'exemple XQuery de http://msdn.microsoft.com/en-us/bb330936.aspx, vous pouvez voir comment vous pouvez écrire une requête complexe dans LINQ au lieu de XPath. LINQ est plus intuitif pour ceux qui n'ont pas d'expérience avec XPath. C'est vrai. –

Questions connexes