本文将简单介绍 C# 对XML的 增删改查。
首先还是创建一个C#项目,并设计简单的界面
初始化
private void initButton_Click(object sender, EventArgs e)
{
if (File.Exists("demo.xml"))
{
//如果存在则 弹出消息框提示
MessageBox.Show("demo.xml 已经存在!");
}
else {
//构建XmlDocument 对象
XmlDocument doc = new XmlDocument();
//声明
XmlDeclaration declare = doc.CreateXmlDeclaration("1.0", "utf-8", null);
doc.AppendChild(declare);
//创建一个根节点(一级)
XmlElement root = doc.CreateElement("First");
doc.AppendChild(root);
//创建节点(二级)
XmlNode node = doc.CreateElement("Second");
//创建节点(三级)
XmlElement element1 = doc.CreateElement("info");
element1.SetAttribute("ID", "1");
element1.SetAttribute("Name", "Sam");
element1.InnerText = "Sam Comment";
node.AppendChild(element1);
XmlElement element2 = doc.CreateElement("info");
element2.SetAttribute("ID", "2");
element2.SetAttribute("Name", "Round");
element2.InnerText = "Round Comment";
node.AppendChild(element2);
root.AppendChild(node);
doc.Save("demo.xml");
//弹出消息框提示初始化完毕
MessageBox.Show("demo.xml 已经初始化完成!");
}
}
初始化按钮是创建一个xml文档,然后存入两条数据
先判断文档demo.xml是否存在,如果不存在,则新建一个xml文档,并创建一级节点 First , 然后在First下再创建二级节点 Second, 接下来 继续创建三级节点 info, 并插入属性 ID , Name 以及相关文本信息。最后保存,显示对话框提示成功。
插入
private void addButton_Click(object sender, EventArgs e)
{
if (File.Exists("demo.xml"))
{
//如果存在则 读取xml文件
XmlDocument doc = new XmlDocument();
doc.Load("demo.xml");
//先获取到 Second的节点(二级)
XmlNode node = doc.SelectSingleNode("//Second");
//变量
//计算当前有多少childnodes
int count = node.ChildNodes.Count +1;
string name = addName.Text;
string id = count +"";
string content = addInner.Text;
//创建节点(三级)
XmlElement element = doc.CreateElement("info");
element.SetAttribute("ID", id);
element.SetAttribute("Name", name);
element.InnerText = content;
node.AppendChild(element);
doc.Save("demo.xml");
//弹出消息框提示初始化完毕
MessageBox.Show("添加成功!");
}
else{
//如果存在则 弹出消息框提示
MessageBox.Show("demo.xml 不存在,请先初始化!");
}
}
插入一条info记录,同样先判断是否存在demo.xml,如果存在则找到,则定位到二级节点 Second, 然后在该节点下创建子节点info, 设置属性和文本信息,追加到二级节点Second下, 保存。
插入前
2.jpg插入后
3.png查询
private void searchButton_Click(object sender, EventArgs e)
{
if (File.Exists("demo.xml"))
{
//如果存在则 读取xml文件
XmlDocument doc = new XmlDocument();
doc.Load("demo.xml");
//找到目标地方
string target = "//info[@Name='" + searchName.Text + "']";
//获取目标节点
XmlNode node = doc.SelectSingleNode(target);
if (node != null)
{
modifyName.Text = node.Attributes[1].Value;
modifyContent.Text = node.InnerText;
}
else {
modifyName.Text = "";
modifyContent.Text = "";
MessageBox.Show("查无此人!");
}
}
else
{
//如果存在则 弹出消息框提示
MessageBox.Show("demo.xml 不存在,请先初始化!");
}
}
先确定demo.xml是否存在,找到用户输入的用户名字,定位到目标地方,然后获取节点。判断节点是否为空, 如果不为空则,在右侧修改信息那里将名字和文本信息显示出来。
4.png修改
private void modifyButton_Click(object sender, EventArgs e)
{
if (File.Exists("demo.xml"))
{
//如果存在则 读取xml文件
XmlDocument doc = new XmlDocument();
doc.Load("demo.xml");
//找到目标地方
string target = "//info[@Name='" + searchName.Text + "']";
//获取目标节点
XmlNode node = doc.SelectSingleNode(target);
if (node != null)
{
node.Attributes[1].Value = modifyName.Text ;
node.InnerText = modifyContent.Text ;
doc.Save("demo.xml");
MessageBox.Show("更改完毕!");
}
else
{
MessageBox.Show("查无此人!");
}
}
else
{
//如果存在则 弹出消息框提示
MessageBox.Show("demo.xml 不存在,请先初始化!");
}
}
通过前面查询到的资料,在输入框内修改名字和文本,点击修改可以更新用户资料。通过定位到用户的名字,对应的节点进行修改。
修改前
5.jpg修改后
6.png删除?删除就留给大家练习练习,相信也不难。
本文小例子在vs2012测试通过
testXML.zip
网友评论