2013-07-15 100 views
1

我有一個'OrderList',帶有'OrderInfo'乘法。每個'訂單信息'只有一個'文件編碼',最多四個'數字'。我怎樣才能找到至極的DocumentId屬於偉大的Documentcode?我有以下XML:從XML文件創建節點對

<OrderList> 
    <OrderInfo> 
     <DocList> 
      <DocumentInfo> 
       <Documentid>12</Documentid> 
      </DocumentInfo> 
      <DocumentInfo> 
       <Documentid>22</Documentid> 
      </DocumentInfo> 
     </DocList> 
     <Documentcode>ABC2</Documentcode> 
    </OrderInfo> 
    <OrderInfo> 
     <DocList> 
      <DocumentInfo> 
       <Documentid>11</Documentid> 
      </DocumentInfo> 
      <DocumentInfo> 
       <Documentid>25</Documentid> 
      </DocumentInfo> 
     </DocList> 
     <Documentcode>ABC3</Documentcode> 
    </OrderInfo> 

有:

var documentId = myXml.SelectNodes("/OrderList/OrderInfo/DocList/DocumentInfo/Documentid"); 

我得到Documentid的總數。但是,我怎麼可以在'OrderInfo'內循環並找出對「Documentcode」 - 「DocumentId」?例如:

ABC2=12 
ABC2=22 
ABC3=11 
ABC3=25 

,如果我有這樣我可以創建詞典的

回答

0

我寫了這個小片的LINQ的,也未必是對缺失的水平/元素非常有彈性。

var doc = XElement.Load(fileName); 

Dictionary<string, string> dic = doc 
    .Descendants("Documentid") 
    .ToDictionary(e => e.Value, 
        e => e.Parent.Parent.Parent.Element("Documentcode").Value); 

// verify 
Console.WriteLine(dic["12"]); 
Console.WriteLine(dic["25"]);