cē操作xmlテーマ

7724 ワード

ダウンロード
1、テキストファイルを新規作成して、名前は:projects.txt。
2、拡張子の名前をprojects.xmlに変更します。 
3、メモ帳でこのファイルを編集します。utf-8を使用して符号化します。内容は以下の通りです
<?xml version="1.0" encoding="GB2312"?>
<root>
  <projects>
    <project>
      <name>  1</name>
      <url>http://baidu.com/</url>
      <sqltype>mysql</sqltype>
      <loginid>root</loginid>
      <password>pwd</password>
      <dt>2013-01-01</dt>
    </project>
    <project>
      <name>  2</name>
      <url>http://google.com/</url>
      <sqltype>sql</sqltype>
      <loginid>root</loginid>
      <password>pwd</password>
      <dt>2013-10-10</dt>
    </project>
  </projects>
</root>
4、新しいウィンドウアプリケーションを作成し、以下の機能を実現します。メニュー項目(ファイル)を一つ置いて、サブメニュー項目3つを含みます。
「xmlを開く」をクリックすると、プログラムは直接にプログラムの現在のディレクトリの下のprojects.xmlを開いて、ファイルの内容を解析して、Datableに保存します。
ウィンドウに表示します。
「閉じる」をクリックすると、ウィンドウの表示が空になります。
「終了」をクリックすると、ウィンドウを閉じます。 
Rxml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
using System.Data;

namespace WindowsFormsApplication1
{
    class Rxml
    {
        private XmlDocument doc;
        public void createXML( string path) {
            doc = new XmlDocument();
            XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "GB2312", null);
            doc.AppendChild(dec);

            XmlElement root = doc.CreateElement("root");
            doc.AppendChild(root);

            XmlNode projects = doc.CreateElement("projects");
            root.AppendChild(projects);

            doc.Save(path);
        }

        public void xmlload(string path) {
            doc = new XmlDocument();
            doc.Load(path);
        }

        public void addnode(string name,string url,string sqltype,string loginid,string password,string dt,string path ) {
            xmlload(path);
            XmlNode xmldocselect= doc.SelectSingleNode("/root/projects");
            XmlElement e1 = doc.CreateElement("project");

            XmlElement e2 = doc.CreateElement("name");
            e2.InnerText = name;
            e1.AppendChild(e2);

            XmlElement e3 = doc.CreateElement("url");
            e3.InnerText = url;
            e1.AppendChild(e3);

            XmlElement e4 = doc.CreateElement("sqltype");
            e4.InnerText = sqltype;
            e1.AppendChild(e4);

            XmlElement e5 = doc.CreateElement("loginid");
            e5.InnerText = loginid;
            e1.AppendChild(e5);

            XmlElement e6 = doc.CreateElement("password");
            e6.InnerText = password;
            e1.AppendChild(e6);

            XmlElement e7 = doc.CreateElement("dt");
            e7.InnerText = dt;
            e1.AppendChild(e7);

            xmldocselect.AppendChild(e1);
            doc.Save(path);
        }

        public DataTable readxml(string path)
        {
            //     。
            XmlTextReader read;
            //        xml,           ,           。
            if (File.Exists(path))
            {
                read = new XmlTextReader(path);
            }
            else
            {
                Assembly asm = Assembly.GetExecutingAssembly();
                Stream sm = asm.GetManifestResourceStream("Tetris.setting.xml");
                read = new XmlTextReader(sm);
            }

            DataTable dt = new DataTable();
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Url", typeof(string));
            dt.Columns.Add("Sqltype", typeof(string));
            dt.Columns.Add("Loginid", typeof(string));
            dt.Columns.Add("Password", typeof(string));
            dt.Columns.Add("Dt", typeof(string));
            DataRow row = dt.NewRow();
          
            string key = "";
            try
            {

                while (read.Read())
                {
                    if (read.Name == "name")
                    {
                        key = read.ReadElementString().Trim();
                        string z = key.ToString().Trim();
                        row["Name"] = z;
                    }
                    else if (read.Name == "url")
                    {
                        key = read.ReadElementString().Trim();
                        string zz = key.ToString().Trim();
                        row["Url"] = zz;
                    }
                    else if (read.Name == "sqltype")
                    {
                        key = read.ReadElementString().Trim();
                        string zzz = key.ToString().Trim();
                        row["Sqltype"] = zzz;
                    }
                    else if (read.Name == "loginid")
                    {
                        key = read.ReadElementString().Trim();
                        string zzzz = key.ToString().Trim();
                        row["Loginid"] = zzzz;
                    }
                    else if (read.Name == "password")
                    {
                        key = read.ReadElementString().Trim();
                        string zzzzz = key.ToString().Trim();
                        row["Password"] = zzzzz;
                    }
                    else if (read.Name == "dt")
                    {
                        key = read.ReadElementString().Trim();
                        string zzzzzz = key.ToString().Trim();
                        row["Dt"] = zzzzzz;
                        dt.Rows.Add(row);
                        row = dt.NewRow();
                    }
                }
            }
            //    。
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            //     。
            finally
            {
                if (read != null)
                {
               
                    read.Close();
                }
            }
            return dt;
        }
    
    
    }
}
Form 1.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        Rxml z = new Rxml();

        private void button1_Click(object sender, EventArgs e)
        {

            z.createXML(@"d:\bb.xml");
        }

        private void button2_Click(object sender, EventArgs e)
        {

            z.addnode("  1", "http://baidu.com/", "mysql", "root", "pwd", "2013-01-01", @"d:\bb.xml");
        }

        private void   ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void   xmlToolStripMenuItem_Click(object sender, EventArgs e)
        {
            dataGridView1.DataSource = z.readxml(@"d:\bb.xml");
        }

        private void   ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            dataGridView1.DataSource = null;

        }

    }
}