2011-03-13 87 views
0

我使用c#從監護人Web服務檢索數據。答案我得到的是XML字符串,它是這樣的從xml字符串檢索數據

<results> 

<content> 

<fields> 

< field name="headlines"> This is headline < /field> 
< field name="text"> This is text < /field> 
<field name="url"> This is url < /field> 
< fields> 
< /content> 
< content> 
......... 
< /content> 
.... 
< results> 

的問題是,有數據的所有節點都認爲是「場」相同的名稱。當我使用這段代碼時,它會從第一個字段節點返回數據,但是我想要來自名爲text的字段的數據。

var head = xmlStories.Root.Descendants("fields").Select(results => new 
        { 
         Text = results.Element("field").Value, 


        }).ToList(); 

        foreach (var results in head) 
        { 



        text [h] = results.Text; 


         h = h + 1; 
        } 
+0

您是否嘗試過XML解析器? – 2011-03-13 19:46:13

回答

1

如何:

var fieldName = "text"; 
var text = 
    xmlStories 
    .Descendants("field") 
    .Where(e => e.Attribute("name").Value.Equals(fieldName)); 
0

這會工作:

var head = xmlStories.Descendants("field") 
        .Where(field =>(string)field.Attribute("name") == "text") 
        .Select(field => new 
         { 
         Text = (string)field, 
         }) 
        .ToList(); 

注投給字符串中的.Where()條件,這將覆蓋情況下屬性name不存在完全一樣。 如果你只是想用一個字符串的內容列表屬性,你並不需要一個匿名類兩種,短會:

var head = xmlStories.Descendants("field") 
        .Where(field =>(string)field.Attribute("name") == "text") 
        .Select(field => (string)field) 
        .ToList(); 

這將是一個字符串列表。