2012-08-05 90 views
2

我有一個的XDocument是這樣的:的XDocument - 獲取節點的值列表

<LookupList> 
<ImageInfo1> 
    <FieldID>1057</FieldID> 
    <FieldName>Lookup_test</FieldName> 
    <LookupText>open</LookupText> 
</ImageInfo1> 
<ImageInfo1> 
    <FieldID>1057</FieldID> 
    <FieldName>Lookup_test</FieldName> 
    <LookupText>Waiting for input</LookupText> 
</ImageInfo1> 
<ImageInfo1> 
    <FieldID>1057</FieldID> 
    <FieldName>Lookup_NEW_NAME</FieldName> 
    <LookupText>Closed</LookupText> 
</ImageInfo1> 
</LookupList> 

我想

  1. 號和唯一的字段名和
  2. 列表的值每個FieldName的LookupText。

有人可以給我一個提示如何去呢?

回答

3

首先,你需要知道如何讀你的XDocument中的元素:

public void ReadXDocument(XDocument doc) 
{ 
    foreach (XElement el in doc.Descendants("ImageInfo1")) 
    { 
     string fieldid = el.Element("FieldID").Value; 
     string fieldName = el.Element("FieldName").Value; 
     string lookupText = el.Element("LookupText").Value; 
    } 

一旦你知道,使用LINQ來實現你的目標是相對簡單的。

這應該給你不同的字段名的列表:

List<String> distinctNames = doc.Descendants("ImageInfo1") 
       .Select(o => o.Element("FieldName").Value) 
       .Distinct().ToList(); 

這應該給你LookupText值的集合每個字段名

IEnumerable groups = doc.Descendants("ImageInfo1") 
       .GroupBy(o => o.Element("FieldName").Value) 
       .Select(o => new { Key = o.Key, Lookups = o.ToList() }); 
} 
+0

太感謝你了。那是我正在尋找的答案! – nilarya 2012-08-06 10:06:48