首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 如何通过C#更好地读取XML? [已结贴,结贴人:Justforaword]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Justforaword
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-07-09 14:23:43 楼主
    /////////////////////XML Begin////////////////////
    <list>

      <list1>
          <type>AA </type>
          <method>download </method>
          <isDelete>true </isDelete>
          <ftpServer>127.0.0.1 </ftpServer>
          <ftpPort>21 </ftpPort>
          <ftpUser>test </ftpUser>
          <ftpPassword>test </ftpPassword>
          <source>X:\ </source>
          <destination>customs </destination>
          <LogPath>./test </LogPath>     
      </list1>

      <list2>
          <type>BB </type>
          <method>download </method>
          <isDelete>true </isDelete>
          <ftpServer>127.0.0.1 </ftpServer>
          <ftpPort>21 </ftpPort>
          <ftpUser>test </ftpUser>
          <ftpPassword>test </ftpPassword>
          <source>X:\ </source>
          <destination>customs </destination>
          <LogPath>./test </LogPath>     
      </list2>

    </list>

    /////////////////////XML END/////////////////////////////////////

    上面是一段XML,我想遍历List*,然后读写每个List*下面的各个值,请问用C#怎么实现?
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xhan2000
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 14:26:391楼 得分:50
    ds.ReadXml得到datatset,下面就简单了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ericzhangbo1982111
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 14:30:092楼 得分:10
    用xmlDocument阿

    XmlDocument doc = new XmlDocument();

             
                doc.Load("test.xml");

                XmlNodeList node = doc.SelectNodes("/list/*");//取得list下面的所有节点


                foreach (XmlNode n in node)
                {
                    if (n.ChildNodes.Count > 0)//判断,也就是list1,list2等节点
                    {
                        n.ChildNodes[0].InnerText;//type element
                        n.ChildNodes[1].InnerText;//method element
                    }
                }
    大概这个意思
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lovefootball
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 14:41:233楼 得分:0
    或者你可以通过序列化的方式
    http://msdn.microsoft.com/zh-cn/library/182eeyhh(VS.80).aspx
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhnzzy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 14:53:534楼 得分:0
    引用 1 楼 xhan2000 的回复:
    ds.ReadXml得到datatset,下面就简单了


    这个比较简单易用
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • clever_yang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 14:57:425楼 得分:0
    引用 4 楼 zhnzzy 的回复:
    引用 1 楼 xhan2000 的回复:
    ds.ReadXml得到datatset,下面就简单了


    这个比较简单易用



    这个好象事先需要定义一个XMLSCHEMA....
    不过确实比较简单~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • falx2004
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 15:05:356楼 得分:0
    序列化...1个list 作为 1个对象
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yilunduyue
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 15:10:317楼 得分:0
    顶1楼
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • netafter
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 15:44:158楼 得分:0
    楼上的都不错第一楼方法最好,你可以接机会总结XML操作的这个技术点,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Justforaword
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 16:25:569楼 得分:0
    可以用DataSet ,可是怎样处理DataSet
    hoho
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaojing7
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 16:38:2010楼 得分:0
    引用 1 楼 xhan2000 的回复:
    ds.ReadXml得到datatset,下面就简单了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xuyang840117
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-09 16:58:3411楼 得分:40
    以下是我 写的  读写 XML 共通  参考下

    public class MCHBaseClass
        {
            private DataSet ds = new DataSet();
            private string mPath = "";

            public DataSet getDS()
            {
                return ds;
            }

          /// <summary>
            /// 加载获取的MXL 获取XML路径
          /// </summary>
          /// <param name="path"> </param>
            public void LoadSetting(string path)
            {
                this.mPath = path;
                this.ds = new DataSet();

                try
                {
                    ds.ReadXml(@mPath);
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.Message);
                    throw;
                }
            }

            public DataTable  Getting(string fNode)
            {
                DataTable dt = new DataTable();

                try
                {
                    dt = ds.Tables[fNode];
                    return dt;

                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.Message);
                    throw;

                }
            }

            /// <summary>
            /// 获取fNode父节点下第intKey行 strSection的属性值
            /// </summary>
            /// <param name="fNode">父节电名称 </param>
            /// <param name="intKey">行数 </param>
            /// <param name="strSection">属性名称 </param>
            /// <returns> </returns>
            public string Getting(string fNode, int intKey, string strSection)
            {
                string strValue = "";

                try
                {
                    strValue = Convert.ToString(ds.Tables[fNode].Rows[intKey][strSection]);
                    return strValue;

                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.Message);
                    throw;
                   
                }
            }

            /// <summary>
            /// 把ds写到路径mPath下,保存成XML
            /// </summary>
            /// <param name="ds1"> </param>
            /// <param name="mPath1"> </param>
            public void SaveSettings(DataSet ds1, string mPath1)
            {
                try
                {
                    ds1.WriteXml(@mPath1);
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.Message);
                    throw;
                }
            }

            /// <summary>
            /// 更改父节点为fNode 第intKey行 strSection属性值 为strDefaultValue
            /// </summary>
            /// <param name="fNode">父节点名称 </param>
            /// <param name="intKey">行数 </param>
            /// <param name="strSection">属性名称 </param>
            /// <param name="strDefaultValue">更改的值 </param>
            public void SetSetting(string fNode, int intKey, string strSection, string strDefaultValue)
            {
                try
                {
                    ds.Tables[fNode].Rows[intKey][strSection] = strDefaultValue;
                    ds.AcceptChanges();
                    this.SaveSettings(ds,mPath);

                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.Message);
                    throw;
                }

            }

            /// <summary>
            /// 在父节点为fNode intKey行 添加 属性名称strSection 值strDefaultValue
            /// </summary>
            /// <param name="fNode">父节点名称 </param>
            /// <param name="intKey">行数 </param>
            /// <param name="strSection">添加的属性名称 </param>
            /// <param name="strDefaultValue">属性值 </param>
            public void AddSettings(string fNode, int intKey, string strSection, string strDefaultValue)
            {
                try
                {
                    ds.Tables[fNode].Columns.Add(strSection);
                    ds.Tables[fNode].Rows[intKey][strSection] = strDefaultValue;
                    ds.AcceptChanges();
                    this.SaveSettings(ds, mPath);
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.Message);
                    throw;
                }
            }

            /// <summary>
            /// 删除父节点为fNode下的 属性值strSection
            /// </summary>
            /// <param name="fNode"> </param>
            /// <param name="strSection"> </param>
            public void DeleteSettings(string fNode, string strSection)
            {
                try
                {
                    ds.Tables[fNode].Columns.Remove(strSection);
                    ds.AcceptChanges();
                    this.SaveSettings(ds, mPath);
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine(ex.Message);
                    throw;
                }
            }
        }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Justforaword
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-10 08:23:1712楼 得分:0
    结贴了还可以回复不?try...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Justforaword
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-10 10:24:0213楼 得分:0
    怎样获取一个DataSet里面有多少个DataTable?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • clever_yang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-14 12:36:5514楼 得分:0
    试试:
    DataSet ds = new DataSet();
              ds.Tables.Count;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • naturelau007
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-14 17:24:5215楼 得分:0
    不错不错,学习!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved