今天做做项目时,有一个需求需要用到一些固定的文本数据,觉得将这些需要存储的信息直接写在代码里很不友好,放在数据库中存储又觉得不够方便,自然就想到了使用xml来进行操作,我平常在项目中其实用到xml的机会并不多,今天既然碰到了,就再温故知新一下吧....
xml简述
xml被设计用来传输和存储数据。(html被设计用来显示数据)
- xml指可扩展标记语言(Extensible Markup Language)
- xml是一种标记语言,很类似html
- xml的设计宗旨是传输数据,而非显示数据
- xml标签没有被预定义。您需要自行定义标签
- xml被设计为具有自我描述性
- xml是w3c的推荐标准
C#操作XML的基本操作:增删改查
demo示例代码:
<?xml version="1.0" encoding="utf-8"> <info> <userinfo> <name>花哥</name> <age>26</age> <email>921442206@qq.com</email> <website>51chiheng.com</website> </userinfo> </info>
增加:
XmlDocument xmld = new XmlDocument();
xmld.Load(Server.MapPath("myfolder/userinfo.xml"));//加载xml文件
XmlNode root = xmld.SelectSingleNode("info");//查找info根节点
XmlElement xml0 = xmld.CreateElement("userinfo");
xml0.SetAttribute("realname", "花**");
XmlElement xml1 = xmld.CreateElement("age");//创建一个age节点
xml1.InnerText ="26";
xml0.AppendChild(xml1);//添加
XmlElement xml2 = xmld.CreateElement("email");//创建emial节点
xml2.InnerText ="921442206@qq.com";
xml0.AppendChild(xml2);//添加
XmlElement xml3 = xmld.CreateElement("website");//创建一个website节点
xml3.InnerText = "51chiheng.com";
xml0.AppendChild(xml3);//添加
root.AppendChild(xml0);
xmld.Save(Server.MapPath("myfolder/userinfo.xml"));
删除操作:
XmlDocument xmld = new XmlDocument();
xmld.Load(Server.MapPath("myfolder/userinfo.xml"));
XmlNodeList list = xmld.SelectSingleNode("info").ChildNodes;
foreach (XmlNode var in list)
{
XmlElement xmle = (XmlElement)var;
if (xmle.GetAttribute("readname") == "花**")
{
xmle.RemoveAll();
xmld.Save(Server.MapPath("myfolder/userinfo.xml"));//删除后记得一定要保存
Page.ClientScript.RegisterStartupScript(GetType(), "", "alert('删除成功!!');", true);
}
else
{
Page.ClientScript.RegisterStartupScript(GetType(), "", "alert('删除失败!!');", true);
}
}
修改操作:
XmlDocument xmld = new XmlDocument(); xmld.Load(Server.MapPath("App_Code/Message.xml"));
XmlNodeList list = xmld.SelectSingleNode("messageList").ChildNodes;
foreach (XmlNode xmln in list)
{
XmlElement xmle = (XmlElement)xmln;//格式转换
if ("花**".Equals(xmle.GetAttribute("readname")))
{
xmle.ChildNodes[0].InnerText = "111";
xmle.ChildNodes[1].InnerText = "222";
xmle.ChildNodes[2].InnerText = "333";
xmle.ChildNodes[3].InnerText = "444";
xmld.Save(Server.MapPath("myfolder/userinfo.xml"));
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('修改成功!!!');location.href='index.aspx'",true);
}
}
查询操作:
//下面的代码开始是用页面编码的方式实现的
XmlDocument xmld = new XmlDocument();//构建xml文档
xmld.Load(Server.MapPath("App_Code/Message.xml"));//加载
XmlNodeList list = xmld.SelectSingleNode("messageList").ChildNodes;//获取子节点
if (list!=null)
{
foreach (XmlNode node in list)
{
XmlElement xmle = (XmlElement)node;//转换
//todo....
}
}