I need to read an XML file to a dictionary.
I read few guides and I only got confused from weird words that I don\'t understand (such as nodes, XML validation etc.). So,
var data = XElement.Parse(xml)
.Elements("def")
.ToDictionary(
el => (int)el.Attribute("number"),
el => (string)el.Attribute("name")
);
This:
XElement
(starting at <database>
)<def ...>
elements@number
as the key (interpreting as an int
), and @name
as the value (as a string)data
, which is implicitly typed as Dictionary<int,string>
Your question is basic, but not inappropriate. Don't worry. I'll explain what you should do.
first you have to load this XML file (if it's on the disk). Otherwise you don't need this step
XDocument database = XDocument.Load(pathToYourXmlFile);
up to here, you got:
<database>
<def number="1" name="one"/>
<def number="2" name="two"/>
</database>
Then you have to get a list of all def elements:
List<XElement> defs = database.Elements("def");
up to here, you got:
<def number="1" name="one"/>
<def number="2" name="two"/>
Now, you should get each item of the list (each def in defs):
foreach(XElement def in defs)
{
// Here you have each def <def number="x" name="y" />
int number = def.Attribute("number").value;
string name = def.Attribute("name").value;
}
the code to extract information from each def is:
int number = def.Attribute("number").value;
string name = def.Attribute("name").value;
Now that you have your number and name, just add it to your dictionary.
dictionary.Add(number, name);
Hope that helps.