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、新建窗口应用程序,实现以下功能。放置一个菜单项(文件),包含三个子菜单项(打开xml,关闭,退出),

当点击“打开xml”时,程序直接打开程序当前目录下的projects.xml,解析出文件内容,存入Datatable中,

然后显示到窗口上。

当点击"关闭"时,清空窗口上的显示。

当点击“退出”时,关闭窗口。 


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;
} }
}

Form1.cs

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; } }
}





c# 操作xml题目的更多相关文章

  1. Asp.Net 操作XML文件的增删改查 利用GridView

    不废话,直接上如何利用Asp.NET操作XML文件,并对其属性进行修改,刚开始的时候,是打算使用JS来控制生成XML文件的,但是最后却是无法创建文件,读取文件则没有使用了 index.aspx 文件 ...

  2. php中通过DOM操作XML

    DOM文档在js里早就接触过,知道DOM不但可以操作html文档,还可以操作XHTML,XML等文档,有着极强的通用性,下面我们通过两个小例子,看看在PHP中是如何用DOM操作XML文档的,和js中差 ...

  3. 使用dom4j操作XML

    DOM4J介绍 DOM4J是使用Java语言编写的,用于读写及操作XML的一套组件,DOM4J同时具有DOM修改文件的优点和SAX读取快速的优点. DOM4J的使用 首先下载dom4j的JAR包,我用 ...

  4. 使用JDOM操作XML

    JDOM介绍 JDOM是使用Java语言编写的,用于读写及操作XML的一套组件,Jdom同时具有DOM修改文件的优点和SAX读取快速的优点. JDOM的使用 首先下载JDOM的JAR包,本文使用的是j ...

  5. php : DOM 操作 XML

    DOM 操作 XML 基本用法 XML文件: person.XML <?xml version="1.0" encoding="utf-8" ?> ...

  6. Strus2第一次课:dom4j操作xml

    先从底层的xml操作技术记录: 当我们新建一个项目,什么架包都没加入的时候,java提供了 org.w3c.dom给我们操作xml里面的元素 import org.w3c.dom.Document; ...

  7. .NET 操作XML

    在C#.net中如何操作XML 需要添加的命名空间: using System.Xml; 定义几个公共对象: XmlDocument xmldoc ; XmlNode xmlnode ; XmlEle ...

  8. php操作xml

    最近计划写个人的小网站,一系列原因选择了用php来写,最大的问题就是虽然php很流行,但我从来没有接触过php,看了一个多星期的基本语法后做些小练习热热身,但是期间是各种问题啊,主要是对php不熟悉, ...

  9. JavaScript操作XML

    JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...

随机推荐

  1. Java学习-031-JSON 之五 -- 特定数据获取(JSONObject满足特定键值)

    前面几篇博文分别讲述了 JSON 的 概要知识.简单数据获取.封装cssSelector数据获取方法.JSONObject 是否包含 key_value,请自行阅读相关博文. 在日常的接口测试脚本编写 ...

  2. Fiddler-001-抓包工具初识

    Fiddler 是一个非常简单的网络调试器,也是目前最常用的http抓包工具之一 .通过 Fiddler,我们能够能够记录客户端和服务器之间的所有 HTTP请求,即记录并检查所有你的电脑和互联网之间的 ...

  3. Java学习-024-获取当前类名或方法名二三文

    今天,看朋友编写程序,打印日志时,需要记录当前类的类名以及当前方法的方法名,我发现 TA 将类名或者方法名直接写死在了代码中...虽说这样可以实现记录类名和方法名,但是当有特殊情况需要修改类名或者方法 ...

  4. SQL、LINQ、Lambda 三种用法(转)

    SQL.LINQ.Lambda 三种用法颜色注释: SQL LinqToSql Lambda QA1. 查询Student表中的所有记录的Sname.Ssex和Class列.select sname, ...

  5. zabbix配置发送报警邮件

    配置邮件分为两种情况: 第一种:使用远端邮件服务器发送报警邮件 Linux系统版本:CentOS6.5-64 下载mailx: http://nchc.dl.sourceforge.net/proje ...

  6. PISA

    http://www.oecd.org/pisa/ 国际学生评估 PISA类测试:一种国际性的科学的评价方法,可强化对考生知识面.综合分析.创新素养方面的考查. 评估内容 第一次PISA评估于2000 ...

  7. 30天,O2O速成攻略【7.19深圳站】

    活动概况 时间:2015年07月19日13:30-16:30 地点:深圳腾讯大厦(南山区科技园科技中一路)2楼多功能厅 主办:APICloud.OneAPM.连接科技 网址:www.apicloud. ...

  8. Android Framework框架_转

    选自<Android内核剖析> Framework定义了客户端组件和服务端组件功能及接口.包含3个主要部分:服务端,客户端和Linux驱动. (一)服务端 服务端主要包含两个重要类,分别是 ...

  9. 解决: Fail to create empty document

    做 Programming Windows with MFC 2nd 的例子 MyWord 的时候. 发现启动的时候总是报错: Fail to create empty document. 搜索了一下 ...

  10. 启动MFC程序的时候报错:0xC0000005: 读取位置 0x00000000 时发生访问冲突

    此程序的结构是 MouseCap.h #pragma once #include <afxwin.h> class MouseCapApp : public CWinApp { publi ...