Comment puis-je accéder à un élément XML de la valeur à l'aide de C#.net des pages web avec WebMatrix?

J'ai regardé beaucoup de ressources, fait beaucoup de recherche, et essayé de nombreux "best-devine" pour accéder à un élément unique à l'aide de WebMatrix avec C#, web-pages, mais rien de ce que je suis en train est de passer à travers.

Envisager un simple document xml qui ressemble à ceci:

<root>
    <requisitionData>
        <element1>I am element 1</element1>
        <element2>I am element 2</element2>
    </requisitionData>
</root>

Je sais que je peux utiliser une boucle foreach, comme suit:

@using System.Xml.Linq

XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));

foreach (XElement element in doc.Descendants("requisitionData"))
{
    @element.Value
}

Et que, bien sûr, fonctionne très bien. Mais si je voulais simplement stocker le seul élément, <element1>'valeur dans une variable de chaîne?

J'ai regardé ici (lien ci-dessous), mais je ne peux pas faire des têtes ou queues de ce code (il est à peine ressemble même le C# pour moi, mais encore une fois, je suis donc de nouveau à l'analyse de XML...):

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/b14ce4d1-77f1-420d-ad91-0989794a1d45/

J'ai aussi vérifié ici: Comment Obtenir Nœud XML à partir de XDocument

Mais le code ci n'a pas de sens pour moi ici. Je continue à penser que il doit y avoir un moyen plus simple de faire cela, espérons-le, sans l'apprentissage d'une toute nouvelle interrogation approche.

---------------------------------LES CHOSES QUE J'AI ESSAYÉ---------------------------------

XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));

string element = doc.Descendants("requisitionData").Descendants("element1").Value;

Erreur que je reçoit: "manquant directive using ou une référence d'assembly

XDocument doc = XDocument.Load(Server.MapPath("~/User_Saves/cradebaugh/testFile.xml"));

XElement element = doc.Descendants("element1");
string val = element.Value;

Erreur que je reçoit: Impossible de convertir implicitement le type de Système.Les Collections.Génériques.IEnumerable' à 'Système.Xml.Linq.XElement'. Une conversion explicite existe (vous manque un plâtre?)

J'ai, en effet, essayé d'autres choses, mais je obtenir à peu près les mêmes erreurs, comme indiqué ci-dessus. Ai-je fait ce plus difficile qu'elle ne l'est, ou suis-je trop simplifier?

-------------------------Mise à JOUR------------------------------

J'ai pu obtenir que cela fonctionne:

string element = doc.Element("root").Element("requisitionData").Element("element1").Value;

@element

Cependant, une chose qui m'inquiète à propos de cette approche est que .Element sélectionne que de la première de match, de sorte que dans un document xml qui ressemble à ceci:

<root>
    <requisitionData>
        <element1>I am element 1</element1>
        <element2>I am element 2</element2>
    </requisitionData>
    <requisitionData>
        <element1>I am element 1</element1>
        <element2>I am element 2</element2>
    </requisitionData>
</root>

Comment pourrais-je accéder à la deuxième occurrence de <element1>?

Après avoir ce problème résolu pour un couple de jours (merci pour la réponse ci-dessous), je vais avoir à dire que l'utilisation de XPathSelectElement(s) semble être la voie à suivre. XPath est puissant (de façon plus que j'ai réalisé) précise et totalement flexible, si j'ai envie d'un élément unique ou à plusieurs.

OriginalL'auteur VoidKing | 2013-04-09