2009-07-25 47 views
1

我正在使用c#。我如何找到使用linq的XElement

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

這是我的xml。我想要採用Tifo。我必須使用「Kod」節點。例如 XpathSelectelement(「Kod」)。value = 1001

+0

這是否只是您的XML文檔的摘錄?如果不是,則需要包含整個文檔的根元素。 – felideon 2009-07-25 14:13:27

+0

是它的一部分的XML文檔。 – cagin 2009-07-25 14:46:47

回答

0

這個工作嗎?

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

假設每一個元素都有<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 matches = from el in doc.Root.Elements() 
       where (int)(el.Element("Kod")) == 1001 
       select el; 
0

這將讓你有對KOD元件匹配值XElements的集合。 ..

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

你可以只使用值的XPath語句,在這種情況下,1001 dahlbyk的答案,並Thorarin的答案應該都工作,以及(除非你哈已經將你的價值看作是一個int,你已經不需要投入了,我只是比較它)。

我只是認爲我會張貼簡單的一行解決方案來提供選項。