最近在办公室没什么事做,老坐着也不行,所以就学了一下xml,当然学的时间有限,所以学得很肤浅.我个人认为,像这些东西.会用就可以啦,至于原理之类用着用着就会有感觉了.
我觉得xml 就和VC++里面的ini(初始化文件)差不多,把一些必要的数据,或者是开机必须加载的一些数据放到这些文本文件中去,因为它们都有一种很规范的格式,所以读取里面的数据或者往里面插入数据的时候非常方便.
public XmlDocument XmlDoc;//Xml 实例 public XmlNode Xmlnode;// public XmlElement Xmlelem;
XmlDocument 是Xml实例
XmlNode 是Xml结点 XmlElement 结点元素
////////首先生成一个.Xml 文件,并往里面插入数据,其实很简单,都有一种固定的模式,当然也有好几种方法,这里我只列出其中的一种方法,仅供大家参考
//得到当前工程所在的目录
string stringCurrDir = System.IO.Directory.GetCurrentDirectory();//得到当前可执行文件所在的目录
MessageBox.Show(stringCurrDir);
stringCurrDir=stringCurrDir+@"\data.xml"; //生成data.xml 文件
//对了顺便说一下,为什么有的字符串前面要用@
@"\data.xml",大家可以看到这里面有转义字符'\',不要@的话,就会报错.我想真正有一定编程经验的人,一定会非常清楚这一点,我没什么经验,只是偶然碰到而已,在这里与大家一起分享一下.会出现如下的错误.
XmlDoc = new XmlDocument();
//加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
XmlDeclaration xmldecl;
xmldecl = XmlDoc.CreateXmlDeclaration("1.0", "gb2312", null);
XmlDoc.AppendChild(xmldecl);
//加入一个根元素
Xmlelem = XmlDoc.CreateElement("", "Employees", "");
XmlDoc.AppendChild(Xmlelem);
//加入另外一个元素
for (int i = 1; i < 3; i++)
{
XmlNode root = XmlDoc.SelectSingleNode("Employees");//查找<Employees>
XmlElement xe1 = XmlDoc.CreateElement("Node");//创建一个<Node>结点
xe1.SetAttribute("genre", "李赞红");
xe1.SetAttribute("ISBN", "2-3631-4");
XmlElement xesub1 = XmlDoc.CreateElement("title");
xesub1.InnerText = "VC++从入门到精通";//设置文本结点
xe1.AppendChild(xesub1);
XmlElement xesub2 = XmlDoc.CreateElement("author");
xesub2.InnerText = "候捷";//设置文本结点
xe1.AppendChild(xesub2);
XmlElement xesub3 = XmlDoc.CreateElement("price");
xesub3.InnerText = "53.8";//设置文本结点
xe1.AppendChild(xesub3);
root.AppendChild(xe1);
}
//XmlDoc.Save(System.IO.Directory.GetCurrentDirectory());
XmlDoc.Save(stringCurrDir);
///添加一个结点
XmlDocument XmlDoc1 = new XmlDocument();
string stringCurrDir = System.IO.Directory.GetCurrentDirectory();
stringCurrDir = stringCurrDir + @"\data.xml";
XmlDoc1.Load(stringCurrDir);
XmlNode root = XmlDoc1.SelectSingleNode("Employees");//查找<Employees>
XmlElement xe1 = XmlDoc1.CreateElement("Node");//创建一个<Node>节点
xe1.SetAttribute("genre", "张三");//设置该节点genre属性
xe1.SetAttribute("ISBN", "1-1111-1");//设置该节点ISBN属性
XmlElement xesub1 = XmlDoc1.CreateElement("title");
xesub1.InnerText = "C#入门帮助";//设置文本结点
xe1.AppendChild(xesub1);//添加到<Node>结点中
XmlElement xesub2 = XmlDoc1.CreateElement("author");
xesub2.InnerText = "高手";
xe1.AppendChild(xesub2);
XmlElement xesub3 = XmlDoc1.CreateElement("price");
xesub3.InnerText = "123.3";
xe1.AppendChild(xesub3);
root.AppendChild(xe1);
XmlDoc1.Save(stringCurrDir);
//读取Xml里面的数据
if (mark != 0)//mark 做标志用,重复点击按钮时,如果listBox 已经有显示,就应该将里面的数据清除
{
listBox1.Items.Clear();
}
XmlDocument XmlDoc1 = new XmlDocument();
string stringCurrDir = System.IO.Directory.GetCurrentDirectory();
stringCurrDir = stringCurrDir + @"\data.xml";
XmlDoc1.Load(stringCurrDir);
//获取Employees节点的所有子节点
XmlNodeList nodeList = XmlDoc1.SelectSingleNode("Employees").ChildNodes;
foreach (XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe = (XmlElement)xn;//将子节点类型转化为XmlElement 类型
string tt=xe.GetAttribute("genre");
listBox1.Items.Add(tt);
//继续获取xe子节点的所有子节点
XmlNodeList nls = xe.ChildNodes;
foreach (XmlNode xn1 in nls)
{
XmlElement xe2 = (XmlElement)xn1;
listBox1.Items.Add(" " + xe2.Name+" "+xe2.InnerText);
}
}
mark = 1;
}
生成的Xml
当然这是我从网上找的资源去学的,具体链接地址如下,大家也应该去学一下
http://www.cnblogs.com/zhaoxinxin/articles/1446174.html
本人也是刚开始写博客,写的不好请大家拍砖,另外有问题,也欢迎大家一起探讨,欢迎评论.