簡體   English   中英

Linq查詢-將嵌套的XML讀取到字典中

[英]Linq query - reading nested XML to dictionary

我正在嘗試解析嵌套的XML文件

結構(簡化)如下:

<CARS_LIST_OUTPUT>
  <RESPONSE>
    <DATETIME>2014-09-03T12:12:55Z</DATETIME>
    <CARS_LIST>
      <CAR>
         <CID>12123</CID>
         <PARTS_LIST>
            <PART>
              <ID>QWEDS23</ID>
            </PART>
            <PART>
              <ID>QWEDS26</ID>
            </PART>
         </PARTS_LIST>
      </CAR>
      <CAR>
         <CID>44123</CID>
         <PARTS_LIST>
            <PART>
              <ID>QWED101</ID>
            </PART>
            <PART>
              <ID>QAADS23</ID>
            </PART>
         </PARTS_LIST>
      </CAR>
     </CARS_LIST>
   </RESPONSE>
 <CAR_LIST_OUTPUT>

我需要制作所有零件ID及其對應的汽車ID(CID)的字典,即

QWEDS23、12123 QWEDS26、12123 QWED101、44123 QAADS23、44123

到目前為止,我到了這一點:

        var nodes = 
            from c in carDirectory.Descendants("CAR")
            select new 
        {
            parts = c.Descendants("PART")
                .Select(part => new {
                        ID = part.Element("ID").Value,
                        c.Element("CID").Value
                        }).ToDictionary(r => r.ID)
        };

但這會產生字典列表。 是否有可能實現我所需要的? 如果是,我該如何改善解決方案? 謝謝你的想法!

這樣的事情應該可以解決問題:

carDirectory.Descendants("CAR")
       .SelectMany(x => x.Descendants("ID")
           .Select(e => new KeyValuePair<string, string>(
               (string) e,
               (string) x.Element("CID"))))
       .ToDictionary(x => x.Key, x => x.Value);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM