对于如何将整个XML文档解析为字典,我需要向正确的方向稍加推动。我的计划是让键成为路径,每个嵌套类型都用“->”分隔。例如:
<Foo>
<Bar>3</Bar>
<Foo>
<Bar>10</Bar>
</Foo>
</Foo>
如果我想获得一个值,我可以使用以下方法将其从字典中获取:
string value = Elements["Foo->Bar"];
我不太确定如何递归地遍历每个元素。
任何帮助表示赞赏。
最佳答案
简单的解决方案:
private static string GetElementPath(XElement element)
{
var parent = element.Parent;
if(parent == null)
{
return element.Name.LocalName;
}
else
{
return GetElementPath(parent) + "->" + element.Name.LocalName;
}
}
static void Main(string[] args)
{
var xml = @"
<Foo>
<Bar>3</Bar>
<Foo>
<Bar>10</Bar>
</Foo>
</Foo>";
var xdoc = XDocument.Parse(xml);
var dictionary = new Dictionary<string, string>();
foreach(var element in xdoc.Descendants())
{
if(!element.HasElements)
{
var key = GetElementPath(element);
dictionary[key] = (string)element;
}
}
Console.WriteLine(dictionary["Foo->Bar"]);
}
关于c# - 将XDocument解析为Dictionary <string,string>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14006654/