• dataGridView读取xml文件


    有两种方法,推荐第二种,不同的地方已经加粗加大了。
    第一种方法:
    using
    System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Xml; namespace WindowsFormsApp13 { public partial class Form1 : Form { public Form1() { InitializeComponent(); CreateXml(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { //没有列名的方法 //DataSet ds = new DataSet(); //ds.ReadXml("try.xml"); //this.dataGridView1.DataSource = ds.Tables[0]; //含有列名的方法 //中心思想就是创建DataSet对象,给DataSet对象的table添加DataTable对象,给DataTable对象添加列名,在添加DataRow对象,查找获得xml文件的节点值,给DataRow循环赋值 DataTable dt = new DataTable(); //添加列名 dt.Columns.Add("书名", typeof(string)); dt.Columns.Add("作者", typeof(string)); dt.Columns.Add("等级", typeof(string)); XmlDocument doc= new XmlDocument(); doc.Load("try.xml"); //先获得根节点 XmlElement root= doc.DocumentElement; //根据根节点,获得所有的子节点 XmlNodeList xmns=root.ChildNodes; //获得子节点的各种值,给每一行赋值。 foreach (XmlNode x in xmns) { //给dt表创建行,name为节点的第一个,auther为第二个,grade为第三个 //获得子节点的各项值,在给行数据赋值 DataRow dr = dt.NewRow(); XmlNode xx= x; string name = x.ChildNodes[0].InnerXml; dr["书名"] = name; string auther = x.ChildNodes[1].InnerXml; dr["作者"] = auther; string grade = x.ChildNodes[2].InnerXml; dr["等级"] = grade;
    dt.Rows.Add(dr);//添加行 }
    //创建DataSet对象,绑定数据 DataSet ds = new DataSet(); ds.Tables.Add(dt); dataGridView1.DataSource = dt;
    } 

    /// <summary>

    /// 创建try.xml文件

    /// </summary>

    private static void CreateXml()
    {
    XmlDocument doc
    = new XmlDocument();
    XmlDeclaration dec
    = doc.CreateXmlDeclaration("1.0", "utf-8", null);
    doc.AppendChild(dec);
    XmlElement books
    = doc.CreateElement("books");
    doc.AppendChild(books);

    XmlElement book1
    = doc.CreateElement("book");
    books.AppendChild(book1);
    XmlElement name1
    = doc.CreateElement("name");
    name1.InnerXml
    = "语文教材";
    book1.AppendChild(name1);
    XmlElement auther1
    = doc.CreateElement("auther");
    auther1.InnerXml
    = "文者";
    book1.AppendChild(auther1);
    XmlElement grade1
    = doc.CreateElement("grade");
    grade1.InnerXml
    = "语级";
    book1.AppendChild(grade1);

    XmlElement book2
    = doc.CreateElement("book");
    books.AppendChild(book2);
    XmlElement name2
    = doc.CreateElement("name");
    name2.InnerXml
    = "数学教材";
    book2.AppendChild(name2);
    XmlElement auther2
    = doc.CreateElement("auther");
    auther2.InnerXml
    = "数者";
    book2.AppendChild(auther2);
    XmlElement grade2
    = doc.CreateElement("grade");
    grade2.InnerXml
    = "数级";
    book2.AppendChild(grade2);

    XmlElement book3
    = doc.CreateElement("book");
    books.AppendChild(book3);
    XmlElement name3
    = doc.CreateElement("name");
    name3.InnerXml
    = "英语教材";
    book3.AppendChild(name3);
    XmlElement auther3
    = doc.CreateElement("auther");
    auther3.InnerXml
    = "英者";
    book3.AppendChild(auther3);
    XmlElement grade3
    = doc.CreateElement("grade");
    grade3.InnerXml
    = "英语级";
    book3.AppendChild(grade3);

    doc.Save(Application.StartupPath
    + @" ry.xml");

    //MessageBox.Show("创建try.xml成功");
    }
    }
    }

    第二种 获取数据更为简单

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Xml;
    using System.Xml.Linq;
    
    namespace WindowsFormsApp13
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                CreateXml();
    
    
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //没有列名的方法
                //DataSet ds = new DataSet();
                //ds.ReadXml("try.xml");
                //this.dataGridView1.DataSource = ds.Tables[0];
    
                //含有列名的方法
                //中心思想就是创建DataSet对象,给DataSet对象的table添加DataTable对象,给DataTable对象添加列名,在添加DataRow对象,查找获得xml文件的节点值,给DataRow循环赋值
                DataTable dt = new DataTable();
                //添加列名
                dt.Columns.Add("书名", typeof(string));
                dt.Columns.Add("作者", typeof(string));
                dt.Columns.Add("等级", typeof(string));
                //XmlDocument doc= new XmlDocument();
                //doc.Load("try.xml");
    
                //加载xml文件
                XElement dd = XElement.Load("try.xml");
                //获取所有book节点的集合
                var node = from n in dd.Elements("book") select n;
                foreach (var n in node)
                {
                    DataRow dr = dt.NewRow();
                    dr["书名"] = n.Element("name").Value;
                    dr["作者"] = n.Element("auther").Value;
                    dr["等级"] = n.Element("grade").Value;
                    dt.Rows.Add(dr);
    
                }
    
                //创建DataSet对象,绑定数据
                DataSet ds = new DataSet();
                ds.Tables.Add(dt);
                dataGridView1.DataSource = dt;     
    //dataGridView1.DataSource=dt.tables[0]; }
    /// <summary> /// 创建try.xml文件 /// </summary> private static void CreateXml() { XmlDocument doc = new XmlDocument(); XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null); doc.AppendChild(dec); XmlElement books = doc.CreateElement("books"); doc.AppendChild(books); XmlElement book1 = doc.CreateElement("book"); books.AppendChild(book1); XmlElement name1 = doc.CreateElement("name"); name1.InnerXml = "语文教材"; book1.AppendChild(name1); XmlElement auther1 = doc.CreateElement("auther"); auther1.InnerXml = "文者"; book1.AppendChild(auther1); XmlElement grade1 = doc.CreateElement("grade"); grade1.InnerXml = "语级"; book1.AppendChild(grade1); XmlElement book2 = doc.CreateElement("book"); books.AppendChild(book2); XmlElement name2 = doc.CreateElement("name"); name2.InnerXml = "数学教材"; book2.AppendChild(name2); XmlElement auther2 = doc.CreateElement("auther"); auther2.InnerXml = "数者"; book2.AppendChild(auther2); XmlElement grade2 = doc.CreateElement("grade"); grade2.InnerXml = "数级"; book2.AppendChild(grade2); XmlElement book3 = doc.CreateElement("book"); books.AppendChild(book3); XmlElement name3 = doc.CreateElement("name"); name3.InnerXml = "英语教材"; book3.AppendChild(name3); XmlElement auther3 = doc.CreateElement("auther"); auther3.InnerXml = "英者"; book3.AppendChild(auther3); XmlElement grade3 = doc.CreateElement("grade"); grade3.InnerXml = "英语级"; book3.AppendChild(grade3); doc.Save(Application.StartupPath + @" ry.xml"); //MessageBox.Show("创建try.xml成功"); } } }
  • 相关阅读:
    ORACLE字符串函数
    Ubuntu14.04安装wineqq国际版
    phonegap学习笔记
    Android Studio 1.5.1
    CodeBlocks+Qt(MinGW)配置
    Java多线程之synchronized(五)
    Java多线程之synchronized(四)
    Java多线程之synchronized(三)
    Java多线程之synchronized(二)
    Java多线程之synchronized(一)
  • 原文地址:https://www.cnblogs.com/wwz-wwz/p/6737524.html
Copyright © 2020-2023  润新知