Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将具有多个重复节点的xml转换为字典_C#_Xml_Dictionary_Xml Parsing - Fatal编程技术网

C# 将具有多个重复节点的xml转换为字典

C# 将具有多个重复节点的xml转换为字典,c#,xml,dictionary,xml-parsing,C#,Xml,Dictionary,Xml Parsing,大家好,请帮帮我 这是我的xml C553BF2BE7DAA91B 地面军事系统 55d242d8-547e-4088-ab68-3a19fca2d7fe 7DDC4C25B33DED 6. 0001602579 DPR9406003 维努斯 地面军事系统 索赔 C446A11E20613C0D 05101617 2011-07-22T18:21:25.687 A014440 GLP 3AAFF97D7D8DB7E9 覆盖率 AB0E091A59AC92DD 05101617-10 1B46

大家好,请帮帮我

这是我的xml


C553BF2BE7DAA91B
地面军事系统
55d242d8-547e-4088-ab68-3a19fca2d7fe
7DDC4C25B33DED
6.
0001602579
DPR9406003
维努斯
地面军事系统
索赔
C446A11E20613C0D
05101617
2011-07-22T18:21:25.687
A014440
GLP
3AAFF97D7D8DB7E9
覆盖率
AB0E091A59AC92DD
05101617-10 
1B46392A1D5020F2
我
0
F523CD61D5D61F29
覆盖率
AB0E091A59AC92DD
05101617-10 
F7D6CB741A0115BC
E
4741
xml有多个重复的节点。我需要在字典中添加节点名和值作为键、值对,但字典不允许我添加重复的键。那我该怎么做呢

我不知道如何获取当前节点的计数,以便将它们附加到节点名并将其作为唯一键添加

这是我的密码

public void BuildDataTable(XmlNode node)
{
    XmlNode nodWorking;

    if (node.NodeType == XmlNodeType.Element)
    {
        if (node.HasChildNodes)
        {
            nodWorking = node.FirstChild;
            while (nodWorking != null)
            {
                if (nodWorking.NodeType != XmlNodeType.Element)
                {
                    dictname.Add(node.ParentNode.Name.ToString() + node.Name.ToString(), node.InnerText);
                }

                BuildDataTable(nodWorking);
                nodWorking = nodWorking.NextSibling;
            }
        }
    }
}

如果我理解正确。。。您在设计词典时遇到问题

如果要在字典中存储多个值,可以使用以下命令:
1) 将列表作为字典的值

IDictionary<string,IList<string>> 

为什么要将其转换为字典。看来L.B是对的。你想要的是一本书,不是一本字典。(或者至少是一本收藏词典)。
IDictionary<string,string> 
public static void BuildDataTable(XmlNode node)
{
    XmlNode nodWorking;

    if (node.NodeType == XmlNodeType.Element)
    {
        if (node.HasChildNodes)
        {
            nodWorking = node.FirstChild;
            while (nodWorking != null)
            {
                if (nodWorking.NodeType != XmlNodeType.Element)
                {

                    if(!dictname.ContainsKey(node.ParentNode.Name.ToString() + node.Name.ToString()))
                    dictname[node.ParentNode.Name.ToString() + node.Name.ToString()] = node.InnerText;
                    else
                        dictname[node.ParentNode.Name.ToString() + node.Name.ToString()] = dictname[node.ParentNode.Name.ToString() + node.Name.ToString()] +","+node.InnerText;

                }

                BuildDataTable(nodWorking);
                nodWorking = nodWorking.NextSibling;
            }
        }
    }
}