最进在做一个项目,需要用到xml做配置文件,但是自己忘的差不多了,所以就温习了一遍。以下是我项目中所用到的,所以肯定也不全面。
1、新建xml文件
using System.Xml;//需要引用 string xmlPath = Application.StartupPath; string xmlName = "listorder.xml"; public void CreateXmlFile() { XmlDocument xmlDoc = new XmlDocument(); //创建类型声明节点 XmlNode node=xmlDoc.CreateXmlDeclaration("1.0","utf-8",""); xmlDoc.AppendChild(node); //创建根节点 XmlNode root = xmlDoc.CreateElement("Persons"); xmlDoc.AppendChild(root); XmlNode node1 = xmlDoc.CreateNode(XmlNodeType.Element, "Person", null); CreateNode(xmlDoc, node1, "name", "张三"); CreateNode(xmlDoc, node1, "sex", "男"); CreateNode(xmlDoc, node1, "); root.AppendChild(node1); XmlNode node2 = xmlDoc.CreateNode(XmlNodeType.Element, "User", null); CreateNode(xmlDoc, node2, "name", "李四"); CreateNode(xmlDoc, node2, "sex", "女"); CreateNode(xmlDoc, node2, "); root.AppendChild(node2); try { xmlDoc.Save(xmlPath + "\\" + xmlName); } catch (Exception e) { //显示错误信息 MessageBox.Show(e.Message, "注意", MessageBoxButtons.OK, MessageBoxIcon.Information); } } /// <summary> /// 创建节点 /// </summary> /// <param name="xmldoc">xml文档</param> /// <param name="parentnode">父节点</param> /// <param name="name">节点名</param> /// <param name="value">节点值</param> /// public void CreateNode(XmlDocument xmlDoc,XmlNode parentNode,string nodeName,string value) { XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, nodeName, null); node.InnerText = value; parentNode.AppendChild(node); }
生成效果如下:
<?xml version="1.0" encoding="utf-8"?> <Users> <User> <name>张三</name> <sex>男</sex> <age>6</age> </User> <User> <name>李四</name> <sex>女</sex> <age>7</age> </User> </Users>
2、读取xml文件
XmlDocument doc = new XmlDocument(); doc.Load(xmlPath + "\\" + xmlName); //List<PlayList> pModeList = new List<PlayList>(); // 得到根节点VideoS XmlNode xn = doc.SelectSingleNode("VideoS"); // 得到根节点的所有子节点 XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode xn1 in xnl) { pModel = new PlayList(); // 将节点转换为元素,便于得到节点的属性值 XmlElement xe = (XmlElement)xn1; // 得到Video节点的所有子节点 XmlNodeList xnl0 = xe.ChildNodes; pModel.PlayID = ).InnerText); pModel.PlayName = xnl0.Item().InnerText; pModel.PlayLx = xnl0.Item().InnerText; pModel.PlayTime = ).InnerText); pModeList.Add(pModel); }