对于如何将整个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/

10-12 06:13