日志文章

2007年11月07日 21:40:31

求助 C#处理xml问题

  大哥们,帮我看看吧
  我的目的是:读取xml中的数据 然后展示在DataGridView控件上,然后 通过对DataGridView上添加数据、保存数据、修改数据 让数据写回到xml 中。
在这里我用的是DataSet类。语言C#
开发工具 VS.NET 2005
代码:

class XmlTool
  {
    /**
      * 在窗体初始化时 解析xml取出 初始数据 返回
      * 调用此方法前:验证文件存在
      */
    public ArrayList initXML(string file_path)
    {
        XmlDocument XMLDom = new XmlDocument();
        XMLDom.Load(file_path);
        XmlNodeList newXMLNodes = XMLDom.SelectNodes("/config/conStrings/conString");
        ArrayList arrayList = new ArrayList(); //存储返回值 用户名 密码 等。。
        foreach (XmlNode xn in newXMLNodes)
        {
          //string title = xn.SelectSingleNode("User_ID").InnerXml;
          XmlNode userNode = xn.SelectSingleNode("User_ID");
          XmlElement xe = (XmlElement)userNode;
          string lastedUsed = xe.GetAttribute("lasted_used"); //原则上只有一个lasted_used属性
          if (lastedUsed.Length > 0 & "true".Equals(lastedUsed,StringComparison.CurrentCultureIgnoreCase))
          {
            string ds = xn.SelectSingleNode("Data_Source").InnerXml;   //服务名
            string user = xe.InnerXml; //用户名
            string pwd = xn.SelectSingleNode("Password").InnerXml;   //密码
            string unicode = xn.SelectSingleNode("Unicode").InnerXml; //Unicode
            string security = xn.SelectSingleNode("Integrated_Security").InnerXml; //继承验证
            string info = xn.SelectSingleNode("Persist_Security_Info").InnerXml;   //敏感保护
            //增加到List列表
            arrayList.Add(ds);
            arrayList.Add(user);
            arrayList.Add(pwd);
            arrayList.Add(unicode);
            arrayList.Add(security);
            arrayList.Add(info);
            //save
            //XMLDom.Save(file_path);
            //MessageBox.Show("找到对应的值了");
            return arrayList;
           
          }
          else
          { //将最后一个值返回
            XmlNode lst_xmlNode = newXMLNodes.Item(newXMLNodes.Count - 1);
            string ds = lst_xmlNode.SelectSingleNode("Data_Source").InnerXml;   //服务名
            string user = lst_xmlNode.SelectSingleNode("User_ID").InnerXml; //用户名
            string pwd = lst_xmlNode.SelectSingleNode("Password").InnerXml;   //密码
            string unicode = lst_xmlNode.SelectSingleNode("Unicode").InnerXml; //Unicode
            string security = lst_xmlNode.SelectSingleNode("Integrated_Security").InnerXml; //继承验证
            string info = lst_xmlNode.SelectSingleNode("Persist_Security_Info").InnerXml;   //敏感保护
            //增加到List列表
            arrayList.Add(ds);
            arrayList.Add(user);
            arrayList.Add(pwd);
            arrayList.Add(unicode);
            arrayList.Add(security);
            arrayList.Add(info);
            //save
            //XMLDom.Save(file_path);
            //返回值
            return arrayList;
            //out
            // MessageBox.Show(ds);
          }
        }
        return null;
    }
    /**
      * 判断给定的文件是否以xml结尾
      * */
   
 

    /**
      * 给定的事件
      * */
    public DataSet xmlLoad(string file_path)
    {
        DataSet ds = null;
        if (File.Exists(file_path))
        {
          ds = new DataSet();
          try
          {
            ds.ReadXml(file_path);
           
          }
          catch (XmlException ex)
          {
            MessageBox.Show(ex.Message,"提示");
            return null;
          }
          catch (IndexOutOfRangeException ex1)
          {
            MessageBox.Show(ex1.Message,"文件加载出错");
            return null;
          }
        }
        else
        {
          MessageBox.Show("文件不存在", "提示");
        }
        return ds;
       
    }
    /**
      * 给定文件路径,如果改路径存在,则找到改路径所在的目录
      * */
    public string getDirPath(string filePath){
        if (filePath.Length > 0 && File.Exists(filePath))
        {
          FileStream ff = File.Create(filePath);
         
        }
        return null;
    }




       
  }

////
窗体的初始化事件里面 加载xml文件

    private void Query_Load(object sender, EventArgs e)
    {
        String file_path = txt_xml_path.Text;
        if (!File.Exists(file_path))
        { //隐藏搜索按钮
          btn_search.Hide();
        }
        dataGridView1.AutoGenerateColumns = false;
        XmlTool tool = new XmlTool();
        ds = tool.xmlLoad(file_path); //加载数据
        dataGridView1.DataSource = ds.Tables[1].DefaultView;        
    }
//
添加按钮里面 增加记录

    private void btn_Add_Click(object sender, EventArgs e)
    {
        DataView dv = ds.Tables[0].DefaultView;
        dv.AddNew();
        dataGridView1.DataSource = dv;
        dataGridView1.CurrentCell.Selected = false;
        dataGridView1.Rows[dataGridView1.RowCount-1].Selected = true;
        dataGridView1.FirstDisplayedScrollingRowIndex= dataGridView1.RowCount - 1;      
    }


这个代码能够添加记录到控件上去,但保存会出错 。
用调试 打印输出看一下 发现 记录添加到 xml文件的结尾。
 

Tags: C#  

类别: 无分类 |  评论(19) |  浏览(5792) |  收藏
一共有 19 条评论
19楼 [匿名]yektb2c3 2009年06月20日 13:33:25 Says:
CK,LEE,Levi's,%E9%98%BF%E7%8E%9B%E5%B0%BC,Armani,%E6%9D%8E%E7%BB%B4%E6%96%AF,%E6%9D%8E%E5%8D%8E%E5%A3%AB,%E7%BA%AF%E6%A3%89%E7%89%9B%E4%BB%94%E8%A3%A4,%E7%89%9B%E4%BB%94%E4%B8%93%E5%8D%96,%E6%96%B0%E5%A1%98%E7%89%9B%E4%BB%94,%3Ca%20href="http://www.cklee.cn"%20%3Ewww.cklee.cn%3C/a%3Eyektb2c3
18楼 [匿名]fdxh7mu2 2009年06月14日 23:44:59 Says:
%E5%A6%82%E4%BD%95%E9
17楼 [匿名]avnpshtf 2009年06月14日 20:01:41 Says:
%E5%85%A8%E5%9B%BD%E6%89%93%E6%8A%98%E6%9C%BA%E7%A5%A82%E6%8A%98%E8%B5%B7%EF%BC%8C%E6%B2%88%E9%98%B3%E5%B8%82%E5%86%85%E5%85%8D%E8%B4%B9%E9
16楼 [匿名]baqnf7mg 2009年06月10日 13:05:37 Says:
%E5%85%A8%E5%9B%BD%E6%89%93%E6%8A%98%E6%9C%BA%E7%A5%A82%E6%8A%98%E8%B5%B7%EF%BC%8C%E6%B2%88%E9%98%B3%E5%B8%82%E5%86%85%E5%85%8D%E8%B4%B9%E9
15楼 [匿名]jkujghjg5 2009年04月30日 21:56:05 Says:
ertertjkb%20wow%20gold,%20%3Ca%20href="http://power4leveling.com/"%3Ewow%20gold%3C/a%3E%20%3Ca%20href="http://power4leveling.com/"%3Echeap%20wow%20gold%3C/a%3E,%20so%20we%20%3Ca%20href="http://power4leveling.com/"%3Ebuy%20wow%20gold%3C/a%3Ejkujghjg5
14楼 [匿名]hfinnbqf 2008年10月14日 04:56:52 Says:
%5Burl=http://www.tm448.com.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.net.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.ac.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.hk.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.bj.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.sh.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.tj.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.cq.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.he.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.sx.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5Dhfinnbqf
13楼 [匿名]lc55x664 2008年10月13日 01:30:16 Says:
%5Burl=http://www.tm448.com.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.net.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.ac.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.hk.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.bj.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.sh.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.tj.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.cq.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.he.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.tm448.sx.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5Dlc55x664
12楼 [匿名]xom4g0qo 2008年10月06日 06:27:07 Says:
%5Burl=http://www.q338448.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.q338448.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.881992.net.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.k338448.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.z338448.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.a338448.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.668550.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.668551.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.668552.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.668553.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.668557.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.668559.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.881992.cn%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88|%E5%BD%A9%5B/url%5Dxom4g0qo
11楼 [匿名]fa97w9t0 2008年10月05日 06:52:41 Says:
%5Burl=http://bursier.ro/assbljq%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://go.eblog.my/assbljq%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://assbljq.gimmicksforgeeks.com%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://assbljq.blogomania.org%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://me0h.com/assbljq%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://assbljq.tellsyou.info%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%0D%0A%5Burl=http://aqqbljq.20six.fr%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://aqqbljq.myblog.de%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://aqqbljq.blogdetik.com%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://aqqbljq.thesitez.com%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://aqqbljq.neoplanta.com%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://aqqbljq.invitevt.com%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://blog.cibermotor.es/aqqbljq%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5D%0D%0A%5Burl=http://www.kaosblog.com/aqqbljq%5D%E9%A6%99%E6%B8%AF%E5%85%AD%E5%90%88.%E5%BD%A9%5B/url%5Dfa97w9t0
10楼 直流电源,直流稳压电源,逆变电源 2008年09月20日 10:44:10 Says:
http://www.lyld.com/ 直流稳压电源
9楼 [匿名]owd3f30t 2008年09月19日 03:51:51 Says:
%5Burl=http://hk778ljq.spaces.live.com%5Dhttp://hk778ljq.spaces.live.com%E7%99%BD%E5%B0%8F%E5%A7%90%E6%9B%BE%E9%81%93%E4%BA%BA%5B/url%5D%20%20%20%0D%0A%5Burl=http://hk788ljq.spaces.live.com%5Dhttp://hk788ljq.spaces.live.com%E6%83%A0%E6%B3%BD%E7%A4%BE%E7%BE%A4%5B/url%5D%20%20%20%0D%0A%5Burl=http://hk8f8ljq.spaces.live.com%5Dhttp://hk8f8ljq.spaces.live.com%E9%A6%99%E6%B8%AF%E6
8楼 [匿名]pptnajam 2008年09月15日 18:40:43 Says:
%5Burl=http://www.do360.com/country/australia-index.asp%5D%E6%BE%B3%E5%A4%A7%E5%88%A9%E4%BA%9A%E7%95%99%E5%AD%A6%5B/url%5D%E9%A2%84%E7%A7%91,%E7%9B%B4%E5%8D%87%E4%B8%96%E7%95%8C%E6%8E%92%E5%90%8D%E5%89%8D150%E5%90%8D%E7%9A%84%E6%BE%B3%E5%A4%A7%E5%88%A9%E4%BA%9A%E5%9B%9B%E6%98%9F%E7%BA%A7%E5%92%8C%E4%BA%94%E6%98%9F%E7%BA%A7%E5%A4%A7%E5%AD%A6.%E4%B8
7楼 [匿名]xklenf69 2008年09月11日 19:35:59 Says:
%5Burl=http://yy121.com%5D%E6%B7%B1%E5%9C%B3%E6%97%85%E8%A1%8C%E7%A4%BE%5B/url%5D%E6%89%BF%E5%8A%9E%E5%90%84%E7%A7%8D%E4%BC%9A%E8%AE%AE%E6%8E%A5%E5%BE%85%E6%96%B9%E6%A1%88.%E5%B9%B6%E6%8F%90%E4%BE%9B%E7%AD%BE%E8%AF%81 %E5%9B%BD%E9%99%85%E6%9C%BA%E7%A5%A8 %E9%85%92%E5%BA%97%E4%B8
6楼 [匿名]6uqx6lpw 2008年09月10日 19:15:53 Says:
%5Burl=http://www.kingword.com.cn%5D%E6%B0%B4%E6%B3%B5%5B/url%5D%0D%0A%E4%B8%8A%E6%B5%B7%E4%B8%8A%E7%90%83%E6%B3%B5%E4%B8%9A%E5%88%B6%E9
5楼 [匿名]sdf34fsdsdf 2008年09月04日 22:43:33 Says:
[url=http://www.shenzhenair.org.cn]
4楼 [匿名]jzwch 2008年09月04日 01:23:36 Says:
[url=http://www.kangdabaojie.cn/]
3楼 [楼主]顽童Blog 2008年08月26日 15:53:29 Says:
该问题已解决 ~~
微软的工程师说 他也搞不定
DataSet 不支持在内存当中两个表的外键关联 所以麽办法啊
哈哈 后来
干脆用原始的方法 解析的 ~~
2楼 [匿名]55555 2008年05月09日 23:10:37 Says:
我也要做这个,可我一点也不会。。你有QQ吗
1楼 Judge 2007年12月04日 16:06:26 Says:
我没懂,学习......
发表评论
看不清楚,换一张