如何解析XML子节点

时间:2014-05-31 15:41:38

标签: c# xml xml-parsing

我有以下格式的数据: https://www.dropbox.com/s/osu4w634lnoy2pw/2.xml

在尝试解析时,我也想要所有的场元素。我能够获得表格下的所有元素,但不能在字段下。有人可以帮帮我吗?

我的代码如下:

XmlDocument doc = new XmlDocument();
        doc.Load(@maploc);

        XmlNodeList nodes = doc.DocumentElement.SelectNodes("/schema/table");

        foreach (XmlNode node in nodes)
        {
            attribute1 = "";
            attribute2 = "";
            attribute3 = "";

            try
            {
                attribute1 = node.Attributes["name"].Value;
                attribute2 = node.SelectSingleNode("tabledefault").InnerText;
                attribute3 = node.SelectSingleNode("invoke").InnerText;
            }
            catch(Exception ex)
            {
                //Nothing
            }

            if (node.HasChildNodes)
            {
                for (int i = 0; i < node.ChildNodes.Count; i++)
                {
                    foreach (XmlNode nodei in node.ChildNodes[i])
                    {
                        attribute4 = "";
                        attribute5 = "";
                        attribute6 = "";

                        try
                        {
                            attribute4 = node.Attributes["name"].Value;
                            attribute5 = node.SelectSingleNode("invoke").InnerText;
                            attribute6 = node.SelectSingleNode("dtype").InnerText;
                        catch (Exception ex)
                        {
                            //Nothing
                        }
                    }
                }
            }

...谢谢

1 个答案:

答案 0 :(得分:1)

您的错误是:

            for (int i = 0; i < node.ChildNodes.Count; i++)
            {
                foreach (XmlNode nodei in node.ChildNodes[i])
                {

您正在迭代当前子节点的子节点(您将进入一个级别太深)。这是因为XmlNode对其子女来说是一个可枚举的。 需要一个foreach循环:

            foreach (XmlNode nodei in node.ChildNodes)
            {