2013-10-09 41 views
0

我有一個XML文件。幾個相同的節點名稱到字符串列表

我試過這個查詢。但是當我得到節點「Val1」時,我喜歡當我想要一個具有值「AAA」和「BBB」的列表時

一個想法?

var res = doc.Descendants("Tags") 
.Where(p => p.Elements("code") 
.Any(c => (string)c.Parent.Attribute("id") == "Val1")) 
.Select(i => i.ToString()).ToArray().First(); 

<?xml version="1.0" encoding="utf-8" ?> 
<MyTag> 
    <Tags id="Val1"> 
    <code>AAA</code> 
    <code>BBB</code> 
    </Tags> 
    <Tags id="Val2"> 
    <code>CCC</code> 
    <code>DDD</code> 
    <code>EEE</code> 
    </Tags> 
</MyTag> 
+1

'doc.Root.Elements(「Tags」)。Single(t =>(string)t.Attribute(「id」)==「Val1」)。Elements( 「code」)。Select(c => c.Value)' – Jodrell

回答

0

您可能需要:

var res = doc.Descendants("Tags") 
.Where(p => p.Elements("code") 
.Any(c => (string)c.Parent.Attribute("id") == "Val1")) 
.Select(i => i.Elements("code")).ToArray().First(); 

或本:

var res = doc.Descendants("Tags") 
.Where(p => p.Elements("code") 
.Any(c => (string)c.Parent.Attribute("id") == "Val1")) 
.Select(i => i.Elements("code").Select (x => (string)x.Value)).ToArray().First(); 

首先將讓你的元素的數組像<code>AAAA</code>而第二個將讓你像一個字符串數組

+0

'.ToArray()'沒有功能。 –

相關問題