vb.net - How to convert XML to Dictionary of Dictionaries -


i have below 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> 

i want convert xml dictionary of dictionaries using linq

dim dicrevisiontags new dictionary(of string, dictionary(of string, list(of string))) 

i tried using

 dim document = xdocument.load("inputxml.xml") 

also

dim ccc = document.elements("revisions").todictionary(function(e) e.elements("revision").todictionary(function(d) d.elements("mastertags"))) 

but unable construct linq give output as

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)) 

thanks gurpreet gill

you can use following:

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())); 

it c#, should able translate it.


Comments