5

I have some XML;

<data>
  <name1>James</name1>
  <name2>John</name2>
  etc..
</data>

The name1, name2, etc could be anything, i want to be able to get this xml into a dictionary ideally, is this possible using the built in .net serialisation?

Thanks, James.

EDIT: Ideally i dont want to use linq. Is it possible to serialise the whole element array to a string? So i'd end up with a string object 'Data' that contained all the child element tags and data?

Matías Fidemraizer
  • 61,574
  • 17
  • 117
  • 195
Cadab
  • 457
  • 9
  • 19

2 Answers2

10

No, but you can use Linq-to-Xml to do so:

XDocument.Load([file path, stream, whatever]).Descendants("data").Descendants()
    .ToDictionary(element => element.Name, element => element.Value)

UPDATE: As OP said in his edit, if there's no way to use Linq-to-Xml, then you¡ll need to customize XML serialization implementing IXmlSerializable (you might want to check this other Q&A: custom xml serialization ).

Community
  • 1
  • 1
Matías Fidemraizer
  • 61,574
  • 17
  • 117
  • 195
0

You can use LINQ to XML with method ToDictionary();

Roman Marusyk
  • 21,493
  • 24
  • 66
  • 105
Nagg
  • 6,080
  • 3
  • 34
  • 40