2009-07-25 9 views
1

Ich arbeite mit C#.Wie finde ich XElement mit linq

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

das ist meine xml. Und ich möchte Tifo nehmen. Ich muss "Kod" Knoten verwenden. Beispiel: XpathSelectelement ("Kod"). Wert = 1001

+0

Ist dies nur ein Auszug aus Ihrem XML-Dokument? Wenn nicht, benötigen Sie ein Wurzelelement, das das gesamte Dokument umfasst. – felideon

+0

ja es ist ein Teil von XML Doc. – cagin

Antwort

0

Würde das funktionieren?

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

es gibt null .. – cagin

+0

Versuchen Sie, wählen Sie kod anstelle von kod.Parent - immer noch null? First() sollte eine Exception werfen, wenn die Abfrage nicht mit irgendwas übereinstimmt, also wäre ich wirklich überrascht, wenn ein Nullwert zurückgegeben würde ... – dahlbyk

1

Unter der Annahme, jedes Element ein <Kod> Element hat, und sie alle gültigen ganzen Zahlen enthalten, könnten Sie verwenden:

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

Dies wird Ihnen eine Sammlung von XElements erhalten, die passenden Werte für das Kod Element haben. ..

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']"); 

Sie können nur den Wert in der Anweisung XPath verwenden, in diesem Fall 1001. dahlbyk Antwort und Thorarin Antwort sollte sowohl Arbeit als auch (es sei denn, Sie ha Dein Wert als Int muss man schon nicht, ich würde es einfach vergleichen).

Ich dachte nur, dass ich eine einfache Ein-Zeilen-Lösung veröffentlichen würde, um Optionen anzubieten.