XML相关操作
一、简单介绍
using System.Xml;
//初始化一个xml实例
XmlDocument xml=new XmlDocument();
//导入指定xml文件
xml.Load(path);
xml.Load(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));
//指定一个节点
XmlNode root=xml.SelectSingleNode("/root");
//获取节点下所有直接子节点
XmlNodeList childlist=root.ChildNodes;
//判断该节点下是否有子节点
root.HasChildNodes;
//获取同名同级节点集合
XmlNodeList nodelist=xml.SelectNodes("/Root/News");
//生成一个新节点
XmlElement node=xml.CreateElement("News");
//将节点加到指定节点下,作为其子节点
root.AppendChild(node);
//将节点加到指定节点下某个子节点前
root.InsertBefore(node,root.ChildeNodes[i]);
//为指定节点的新建属性并赋值
node.SetAttribute("id","11111");
//为指定节点添加子节点
root.AppendChild(node);
//获取指定节点的指定属性值
string id=node.Attributes["id"].Value;
//获取指定节点中的文本
string content=node.InnerText;
//保存XML文件
string path=Server.MapPath("~/file/bookstore.xml");
xml.Save(path);
//or use :xml.Save(HttpContext.Current.Server.MapPath("~/file/bookstore.xml"));
二、具体实例
新建xml文档 名字为userinfo.xml:
内容:
<UserInfo> <Persion id="001"> <name>李鹏</name> <gender>男</gender> </Persion> <Persion id="002"> <name>小明</name> <gender>男</gender> </Persion> <Persion id="003"> <name>小花</name> <gender>女</gender> </Persion> </UserInfo>
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Xml; using System.IO; namespace WebApplication1 { public partial class Test : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string path; path = Server.MapPath("file/userinfo.xml"); if (File.Exists(path)) { lblFile.Text = "文件存在"; } //首先加载这个xml文档 XmlDocument xml = new XmlDocument(); xml.Load(path); #region 一:节点的加载 //获取userinfo节点 XmlNode node = xml.SelectSingleNode("UserInfo"); //获取Persion节点集合 XmlNodeList nodeList = xml.SelectNodes("/UserInfo/Persion"); //获取Persion节点的属性为id的value foreach (XmlNode aN in nodeList) { XmlElement axe = (XmlElement)aN; //第一种方法 string str = axe.GetAttribute("id"); //第二种方法 string str1 = axe.Attributes["id"].Value; } //获取到第一个persion节点的子节点 XmlNodeList nodeList2 = node.FirstChild.ChildNodes; foreach (XmlNode aN in nodeList2) { XmlElement axe = (XmlElement)aN; string biaoqian = axe.Name; string value = axe.InnerXml; } #endregion #region 二:新XML文档的建立与节点操作(对data.xml操作) XmlDocument xmldoc = new XmlDocument(); //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?> XmlDeclaration xmldecl; xmldecl = xmldoc.CreateXmlDeclaration("1.0", "utf-8", null); xmldoc.AppendChild(xmldecl); //加入一个根元素 XmlElement xmlelem = xmldoc.CreateElement("", "User", ""); xmldoc.AppendChild(xmlelem); //加入另外一个元素 XmlNode root = xmldoc.SelectSingleNode("User");//查找<User> XmlElement xe1 = xmldoc.CreateElement("Persion");//创建一个<Node>节点 xe1.SetAttribute("id", "001");//设置该节点id属性 root.AppendChild(xe1);//将persion添加到<User>节点中 XmlElement xesub1 = xmldoc.CreateElement("name"); xesub1.InnerText = "李鹏";//设置文本节点 xe1.AppendChild(xesub1);//添加到<Node>节点中 XmlElement xesub2 = xmldoc.CreateElement("gender"); xesub2.InnerText = "男"; xe1.AppendChild(xesub2); XmlElement xesub3 = xmldoc.CreateElement("age"); xesub3.InnerText = "21"; xe1.AppendChild(xesub3); //保存创建好的XML文档 xmldoc.Save(Server.MapPath("~/file/data.xml")); #endregion #region 三:修改节点的值和删除一个节点(对userinfo.xml操作) XmlNodeList NDs = xml.SelectNodes("/UserInfo/Persion"); foreach (XmlNode axn in NDs) { XmlElement axe = (XmlElement)axn; string str = axe.GetAttribute("id"); if (str == "002") { XmlElement axelm = xml.CreateElement("age"); axelm.InnerXml = "20"; axn.AppendChild(axelm); } if (str == "003") { //必须要用父节点移除子节点 node.RemoveChild(axe); } } xml.Save(Server.MapPath("~/file/userinfo.xml")); #endregion } } }
结果:
<UserInfo> <Persion id="001"> <name>李鹏</name> <gender>男</gender> </Persion> <Persion id="002"> <name>小明</name> <gender>男</gender> <age>20</age> </Persion> </UserInfo>