0

私は以下のXMLを持っています

    <?xml version="1.0" encoding="UTF-8"?>
    <Revisions>
        <Revision name="R1">
            <MasterTags>
                <MasterTag name="MT1">
                    <ChildTags>
                        <ChildTag>CT1</ChildTag>
                    </ChildTags>
                </MasterTag>
                <MasterTag name="MT2">
                    <ChildTags>
                        <ChildTag>CT4</ChildTag>
                    </ChildTags>
                </MasterTag>
        </Revision>
        <Revision name="R2">
            <MasterTags>
                <MasterTag name="MT6">
                    <ChildTags>
                        <ChildTag>CT21</ChildTag>
                        <ChildTag>CT22</ChildTag>
                        <ChildTag>CT23</ChildTag>   
                    </ChildTags>
                    </MasterTag>
                <MasterTag name="MT7">
                    <ChildTags>
                        <ChildTag>CT24</ChildTag>
                        <ChildTag>CT25</ChildTag>
                        <ChildTag>CT26</ChildTag>   
                    </ChildTags>
                </MasterTag>
         </Revision>
   </Revisions>

この XML を LINQ を使用して辞書の辞書に変換したい

Dim dicRevisionTags As New Dictionary(Of String, Dictionary(Of String, List(Of String)))

使ってみた

 Dim document = XDocument.Load("Inputxml.xml")

のようなものも

Dim ccc = document.Elements("Revisions").ToDictionary(Function(e) e.Elements("Revision").ToDictionary(Function(d) d.Elements("MasterTags")))

しかし、出力を与えるLINQを構築することはできません

R1-> key, Value( M1, list(of CT1))
        , Value( M2, list(of CT4))

R2-> key, Value( M6, list(of CT21
                             CT22
                             CT23))
        , Value( M7, list(of CT24
                             CT25
                             CT26))

ありがとうグルプリート・ギル

4

1 に答える 1

2

以下を使用できます。

var result = 
    doc.Root
       .Elements("Revision")
       .ToDictionary(x => (string)x.Attribute("name"),
                     x => x.Element("MasterTags")
                           .Elements("MasterTag")
                           .ToDictionary(y => (string)y.Attribute("name"),
                                         y => y.Element("ChildTags")
                                               .Elements("ChildTag")
                                               .Select(z => (string)z)
                                               .ToList()));

C#ですが、翻訳できるはずです。

于 2013-07-11T09:50:02.027 に答える