У меня есть xml типа:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<set1>
<a>
<value>False</value>
<defaultValue>False</defaultValue>
</a>
<b>
<value>False</value>
<defaultValue>False</defaultValue>
</b>
</set1>
<set2>
<c>
<value>False</value>
<defaultValue>False</defaultValue>
</c>
</set2>
</root>
Теперь я пытаюсь преобразовать его в словарь, используя код ниже:
using System.Collections.Generic;
using System.Xml.Linq;
namespace testxml
{
struct ConfigFileElements
{
public string value;
public string defaultValue;
}
class xmltestread
{
public static Dictionary<string, Dictionary<string, ConfigFileElements>>
ReadConfigXml(XDocument configFile)
{
var dict = new Dictionary<string, Dictionary<string, ConfigFileElements>>();
if (configFile.Root != null)
{
foreach (var element in configFile.Root.Elements())
{
var list = new Dictionary<string, ConfigFileElements>();
foreach (var child in element.Elements())
{
var elementvalues = new ConfigFileElements();
foreach (var node in child.Elements())
{
if (node.Name.ToString().Equals("value"))
{
elementvalues.value = node.Value;
}
else if (node.Name.ToString().Equals("defaultValue"))
{
elementvalues.defaultValue = node.Value;
}
}
list.Add(child.Name.ToString(), elementvalues);
}
dict.Add(element.Name.ToString(), list);
}
}
return dict;
}
}
}
Проблема здесь заключается в том, что я должен итерируйте три цикла для создания моего словаря, есть ли какие-либо другие функции в. net, которые делают код разборчивым и хорошо выглядят.
как linq to xml или любой другой тип встроенной библиотеки в xml для выполнения этого типа сложных операций
также я бы добавил больше тегов, таких как значение min / max, и они добавили бы пару других операторов if else к существующим условиям, что является еще одним ограничением.