我把 XML 理解成一种数据集,像是数据库中的 DataSet ,只是 XML 更为简单,而且用途广泛,最重要的一点我觉得是不用再部署数据库了。当然这也只是个人的理解,我自己还在初学阶段,有不懂的地方还希望大家斧正。
下面是我在学习 XML 中总结的一点,作为以后学习的参考。
在数据库中添加 删除 修改节点数据:代码已经添加注释,写的已经很明白了。
1.XML文件 Book.xml
Code
<?xml version="1.0" encoding="utf-8"?>
<bookstore>
<book genre="computer">
<title>
Programing with C#
</title>
</book>
<book genre="Study">
<title>Crazy English</title>
</book>
<book genre="UpdateStudy">
<title>Crazy English</title>
</book>
<book genre="fantasy">
<title>
Harry Potter
</title>
</book>
</bookstore>
2.创建C#窗体程序
2.1 添加三个Button(btnInsert / btnUpdate / btnDelete)分别处理响应事件
2.2 添加一个TextBox (Multiline = true)
2.3 处理窗体Load事件
Code
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; // Notice
using System.IO;
namespace XmlOperation
{
public partial class MainFrm : Form
{
XmlDocument doc;
XmlNode root;
public MainFrm()
{
InitializeComponent();
doc = new XmlDocument();
doc.Load("Book.xml");
root = doc.SelectSingleNode("bookstore");
}
// 添加一个 book 节点,并设置其属性值
private void btnInsert_Click(object sender, EventArgs e)
{
XmlElement book = doc.CreateElement("book");
book.SetAttribute("genre", "study");
// 创建 title 节点
XmlElement title = doc.CreateElement("title");
title.InnerText = "Crazy English";
// 将节点分别附加到父节点
book.AppendChild(title);
root.AppendChild(book);
// 保存
doc.Save("Book.xml");
// 输出
OutputToTxtBox();
}
private void OutputToTxtBox()
{
using (Stream s = File.Open("Book.xml", FileMode.Open))
{
using (StreamReader sr = new StreamReader(s))
{
this.textBoxXmlFile.Text = sr.ReadToEnd();
}
}
}
// 删除 book 节点中 genre="study" 且 title="Crazy English" 的节点
private void btnDelete_Click(object sender, EventArgs e)
{
XmlNodeList list = root.ChildNodes;
foreach (XmlNode xn in list)
{
XmlElement element = (XmlElement)xn;
if (element.GetAttribute("genre") == "study" && xn.SelectSingleNode("title").InnerText == "Crazy English")
{
xn.ParentNode.RemoveChild(xn);
break;
}
}
// 保存 XML 文件
doc.Save("Book.xml");
// 输出
OutputToTxtBox();
}
private void MainFrm_Load(object sender, EventArgs e)
{
OutputToTxtBox();
}
// 修改 book 节点中将genre属性值为"study" 改为 "UpdateStudy"
private void btnUpdate_Click(object sender, EventArgs e)
{
XmlNodeList list = root.ChildNodes;
foreach (XmlNode xn in list)
{
XmlElement element = (XmlElement)xn;
if (element.GetAttribute("genre") == "study")
{
element.SetAttribute("genre", "UpdateStudy");
}
}
doc.Save("Book.xml");
OutputToTxtBox();
}
}
}
3.程序结束,这是我在自己的机器上调出来的,有问题一起讨论。