zoukankan      html  css  js  c++  java
  • C# 遍历Xml文件

    前一段时间做的东西,打算把它分时间上传上来,供大家分享。
    我们都知道Xml已经成为一种公认的标准,所以商业上可以把它作为接口以供不同的公司之间进行通信。
    下面我把自己搜集到的Xml遍历算法一一列举出来:

    GetXmlData()
    {
                ArrayList headersubList = new ArrayList();
                    //获取当前XML文档的根 一级
                    XmlNode oNode = m_oDom.DocumentElement;

                    //获取根节点的所有子节点列表
                    XmlNodeList oList = oNode.ChildNodes;

                    //标记当前节点
                    XmlNode oCurrentNode;
                    //遍历所有二级节点
                    for (int i = 0; i < oList.Count; i++)
                    {
                        //二级
                        oCurrentNode = oList[i];

                        //检测当前节点的名称,节点的值是否与已知匹配
                        if (oCurrentNode.Name.ToLower().Equals("store"))
                        {
                            //检测是否有子节点 三级
                            if (oCurrentNode.HasChildNodes)
                            {
                                Console.WriteLine(oCurrentNode.ChildNodes.Count);

                                //遍历当前节点的所有子节点
                                for (int n = 0; n < oCurrentNode.ChildNodes.Count; n++)
                                {
                                    //检测当前节点的子节点名称是否与已知匹配
                                    if (oCurrentNode.ChildNodes[n].Name.ToLower() == "sale")
                                    {
                                        //获取该节点所有属性,以供查询
                                        XmlNamedNodeMap oMap = oCurrentNode.ChildNodes[n].Attributes;

                                        Hashtable headItem = new Hashtable();
                                        headItem.Add("Id", oCurrentNode.Attributes.GetNamedItem("Id").Value);
                                        headItem.Add("Name", oCurrentNode.Attributes.GetNamedItem("Name").Value);
                                        headItem.Add("OrderNo", oMap.GetNamedItem("OrderNo").Value);
                                        headItem.Add("Qty", oMap.GetNamedItem("Qty").Value);

                                        headersubList.Add(headItem);

                                        Console.WriteLine(oCurrentNode.Attributes.GetNamedItem("Id").Value);
                                        Console.WriteLine(oCurrentNode.Attributes.GetNamedItem("Name").Value);
                                        Console.WriteLine(oMap.GetNamedItem("OrderNo").Value);
                                        Console.WriteLine(oMap.GetNamedItem("Qty").Value);

                                        Console.ReadLine();
                                    }
                                }
                            }
                        }
                    }
     }
    以上是对已知Xml文件进行遍历,该方法主要是应急之用,也就是老板告诉你一个小时搞定Xml数据查询,那么该方法就是集合里的最有效的方法,但其缺点也是致命的,即它不是通用的方法,当Xml文档格式放生变化之后,程序也要做较多调整。
    对于一劳永逸的我们当然喜欢用更标准的方法对其进行遍历。

  • 相关阅读:
    codevs1735 方程的解数(meet in the middle)
    cf280C. Game on Tree(期望线性性)
    使用ASP.NET上传多个文件到服务器
    Oracle DB 数据库维护
    poj 3237(树链剖分+线段树)
    undefined reference to 'pthread_create'
    ios开发-调用系统自带手势
    Mysql创建、删除用户、查询所有用户等教程,提升您的MYSQL安全度!
    Number Sequence_hdu_1005(规律)
    SCU 4313 把一棵树切成每段K个点 (n%k)剩下的点不管
  • 原文地址:https://www.cnblogs.com/dajiang02/p/1886144.html
Copyright © 2011-2022 走看看