6

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
  • 63,804
  • 18
  • 124
  • 206
Cadab
  • 467
  • 9
  • 19

2 Answers2

11

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
  • 63,804
  • 18
  • 124
  • 206
0

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

Roman Marusyk
  • 23,328
  • 24
  • 73
  • 116
EgorBo
  • 6,120
  • 3
  • 35
  • 40