2009-07-25 5 views
1

Je travaille avec C#.Comment puis-je trouver XElement en utilisant linq

<Tüberkiloz> 
    <Kod> 
     1000 
    </Kod> 
    </Tüberkiloz> 
    <Tifo> 
    <Kod> 
     1001 
    </Kod> 
    </Tifo> 
    <Bakteriyel_Endokardit> 
    <Kod> 
     1002 
    </Kod> 
    </Bakteriyel_Endokardit> 

Ceci est mon fichier XML. Et je veux prendre Tifo. Je dois utiliser des nœuds "Kod". par exemple XpathSelectelement ("Kod"). value = 1001

+0

Est-ce juste un extrait de votre document XML? Sinon, vous avez besoin d'un élément racine englobant l'ensemble du document. – felideon

+0

oui c'est une partie de doc xml. – cagin

Répondre

0

Est-ce que cela fonctionnerait?

XElement root = XElement.Parse("..."); 
var tifo = (
    from kod in root.Descendants("Kod") 
    where kod.Value == "1001" 
    select kod.Parent 
    ).First(); 
+0

il renvoie null .. – cagin

+0

Essayez select kod au lieu de kod.Parent - encore null? First() devrait lancer une exception si la requête ne correspond à rien, donc je serais vraiment surpris de voir une valeur nulle retournée ... – dahlbyk

1

En supposant chaque élément a un élément <Kod>, et ils contiennent tous des entiers valides, vous pouvez utiliser:

var doc = XDocument.Parse(@" 
    <root> 
    <Tüberkiloz> 
     <Kod>1000</Kod> 
    </Tüberkiloz> 
    <Tifo> 
     <Kod>1001</Kod> 
    </Tifo> 
    <Bakteriyel_Endokardit> 
     <Kod>1002</Kod> 
    </Bakteriyel_Endokardit> 
    </root>"); 

var matches = from el in doc.Root.Elements() 
       where (int)(el.Element("Kod")) == 1001 
       select el; 
0

Vous obtiendrez une collection de XElements qui ont des valeurs correspondantes pour l'élément Kod. ..

var doc = XDocument.Parse(@" 
       <root> 
       <Tüberkiloz> 
        <Kod>1000</Kod> 
       </Tüberkiloz> 
       <Tifo> 
        <Kod>1001</Kod> 
       </Tifo> 
       <Bakteriyel_Endokardit> 
        <Kod>1002</Kod> 
       </Bakteriyel_Endokardit> 
       </root>"); 

var matchingElements = doc.XPathSelectElements("root/*[./Kod/text() = '1001']"); 

vous pouvez simplement utiliser la valeur dans la déclaration XPath, dans la réponse de ce cas et 1001. dahlbyk la réponse de Thorarin devrait à la fois le travail et (à moins que vous ha Ayez déjà votre valeur en tant qu'int déjà vous n'avez pas besoin de lancer, je voudrais juste le comparer). Je pensais juste que je posterais une solution simple ligne pour offrir des options.

Questions connexes