C#新建XML文档
代码示例:
public void WriteXML() { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "xml文档|*.xml"; //筛选器 if (sfd.ShowDialog() == DialogResult.OK) { XmlDocument doc = new XmlDocument(); string path = sfd.FileName; //获取用户文件保存的路径 //创建xml文档的声明 doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", "yes")); //创建xml文档的根节点 XmlElement rootNode = doc.CreateElement("Class"); //将根节点添加到xml文档中 doc.AppendChild(rootNode); for (int i = 1; i <= 3; i++) { //创建子节点 XmlElement childNode = doc.CreateElement("Student"); //创建学号元素 XmlElement elementID = doc.CreateElement("ID"); elementID.InnerText = i.ToString(); //赋值 //创建姓名元素 XmlElement elementName = doc.CreateElement("Name"); elementName.InnerText = "张三"; //赋值 //创建性别元素 XmlElement elementSex = doc.CreateElement("Sex"); elementSex.InnerText = "男"; //赋值 //创建专业元素 XmlElement elementMajor = doc.CreateElement("Major"); elementMajor.InnerText = "软件工程"; //赋值 //将elementID、elementName、elementSex、elementMajor、四个子元素添加到 childNode childNode.AppendChild(elementID); childNode.AppendChild(elementName); childNode.AppendChild(elementSex); childNode.AppendChild(elementMajor); //将子节点添加到根节点的末尾 rootNode.AppendChild(childNode); } //保存 doc.Save(path); MessageBox.Show("XML文档创建成功!"); } }
XML文档内容如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <Class> <Student> <ID>1</ID> <Name>张三</Name> <Sex>男</Sex> <Major>软件工程</Major> </Student> <Student> <ID>2</ID> <Name>张三</Name> <Sex>男</Sex> <Major>软件工程</Major> </Student> <Student> <ID>3</ID> <Name>张三</Name> <Sex>男</Sex> <Major>软件工程</Major> </Student> </Class>
创建带属性的XML文档
代码示例:
public void WriteXML() { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "xml文档|*.xml"; //筛选器 if (sfd.ShowDialog() == DialogResult.OK) { XmlDocument doc = new XmlDocument(); string path = sfd.FileName; //获取用户文件保存的路径 //创建xml文档的声明 doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", "yes")); //创建xml文档的根节点 XmlElement rootNode = doc.CreateElement("Inventory"); //Inventory(清单) //将根节点添加到xml文档中 doc.AppendChild(rootNode); //创建子节点 XmlElement elementHandler = doc.CreateElement("Handler"); //Handler(处理者) elementHandler.InnerText = "沈婷婷"; //赋值 rootNode.AppendChild(elementHandler); //创建子节点 XmlElement elementDate = doc.CreateElement("Date"); //Date(日期) elementDate.InnerText = "2019-05-20"; //赋值 rootNode.AppendChild(elementDate); //创建子节点 XmlElement elementItems = doc.CreateElement("Items"); //创建子节点 XmlElement elementGoods_1 = doc.CreateElement("Goods"); //给节点添加属性 elementGoods_1.SetAttribute("Name", "德芙巧克力"); elementGoods_1.SetAttribute("Price", "¥18.00"); elementGoods_1.SetAttribute("Count", "2"); elementItems.AppendChild(elementGoods_1); //创建子节点 XmlElement elementGoods_2 = doc.CreateElement("Goods"); //给节点添加属性 elementGoods_2.SetAttribute("Name", "益力多"); elementGoods_2.SetAttribute("Price", "¥12.00"); elementGoods_2.SetAttribute("Count", "5"); elementItems.AppendChild(elementGoods_2); //创建子节点 XmlElement elementGoods_3 = doc.CreateElement("Goods"); //给节点添加属性 elementGoods_3.SetAttribute("Name", "玫瑰鲜花"); elementGoods_3.SetAttribute("Price", "¥520.00"); elementGoods_3.SetAttribute("Count", "1"); elementItems.AppendChild(elementGoods_3); rootNode.AppendChild(elementItems); //保存 doc.Save(path); MessageBox.Show("XML文档创建成功!"); } }
XML文档内容如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <Inventory> <Handler>沈婷婷</Handler> <Date>2019-05-20</Date> <Items> <Goods Name="德芙巧克力" Price="¥18.00" Count="2" /> <Goods Name="益力多" Price="¥12.00" Count="5" /> <Goods Name="玫瑰鲜花" Price="¥520.00" Count="1" /> </Items> </Inventory>
读取XML文档
代码示例:
public void ReadXML() { OpenFileDialog ofd = new OpenFileDialog(); //用 OpenFileDialog 类来打开文档 ofd.Filter = "XML文件(*.xml)|*.xml"; //筛选文件类型 if (ofd.ShowDialog() == DialogResult.OK) //显示对话框 判断用户是否点击打开按钮 { string path = ofd.FileName; //获取文件路径 XmlDocument doc = new XmlDocument(); //定义XML文档对象 doc.Load(path); //加载文件 XmlNodeList nodeList = doc.SelectNodes("/Class/Student"); //选择匹配 XPath 表达式的节点列表 if (nodeList.Count > 0) //获取nodeList节点数,若节点数大于0,则说明有节点,反之则为无节点 { //方法一: foreach (XmlNode node in nodeList) { foreach (XmlNode item in node.ChildNodes) { MessageBox.Show(item.InnerText.ToString()); } } //方法二: //for (int i = 0; i < nodeList.Count; i++) //{ // XmlNode node = nodeList.Item(i); //把第i组节点赋值给node // for (int j = 0; j < node.ChildNodes.Count; j++) // { // MessageBox.Show(node.ChildNodes[j].InnerText.ToString()); //获取单节点node下子节点的值 // } //} } else { MessageBox.Show("没有在 '/Class/Student' 下获取到节点", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
读取带属性的XML文档
代码示例:
public void ReadXML() { OpenFileDialog ofd = new OpenFileDialog(); //用 OpenFileDialog 类来打开文档 ofd.Filter = "XML文件(*.xml)|*.xml"; //筛选文件类型 if (ofd.ShowDialog() == DialogResult.OK) //显示对话框 判断用户是否点击打开按钮 { string path = ofd.FileName; //获取文件路径 XmlDocument doc = new XmlDocument(); //定义XML文档对象 doc.Load(path); //加载文件 XmlNodeList nodeList = doc.SelectNodes("/Inventory/Items"); //选择匹配 XPath 表达式的节点列表 if (nodeList.Count > 0) //获取nodeList节点数,若节点数大于0,则说明有节点,反之则为无节点 { //方法一: foreach (XmlNode node in nodeList) { foreach (XmlNode item in node.ChildNodes) { MessageBox.Show(item.Attributes["Name"].Value + " \t " + item.Attributes["Price"].Value + " \t " + item.Attributes["Count"].Value); } } //方法二: //for (int i = 0; i < nodeList.Count; i++) //{ // XmlNode node = nodeList.Item(i); //把第i组节点赋值给node // for (int j = 0; j < node.ChildNodes.Count; j++) // { // MessageBox.Show(node.ChildNodes[j].Attributes["Name"].Value + " \t " + node.ChildNodes[j].Attributes["Price"].Value + " \t " + node.ChildNodes[j].Attributes["Count"].Value); // } //} } else { MessageBox.Show("没有在 '/Inventory/Items' 下获取到节点", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
编辑XML文档
代码示例:
public void EditXML() { OpenFileDialog ofd = new OpenFileDialog(); //用 OpenFileDialog 类来打开文档 ofd.Filter = "XML文件(*.xml)|*.xml"; //筛选文件类型 if (ofd.ShowDialog() == DialogResult.OK) //显示对话框 判断用户是否点击打开按钮 { string path = ofd.FileName; //获取文件路径 XmlDocument doc = new XmlDocument(); //定义XML文档对象 doc.Load(path); //加载文件 XmlNodeList nodeList = doc.SelectNodes("/Class/Student"); //选择匹配 XPath 表达式的节点列表 if (nodeList.Count > 0) //获取nodeList节点数,若节点数大于0,则说明有节点,反之则为无节点 { for (int i = 0; i < nodeList.Count; i++) { XmlNode node = nodeList.Item(i); //把第i组节点赋值给node for (int j = 0; j < node.ChildNodes.Count; j++) { node.ChildNodes[j].InnerText += i.ToString(); //重新赋值 } } doc.Save(path); MessageBox.Show("XML文档编辑成功!"); } else { MessageBox.Show("没有在 '/Class/Student' 下获取到节点", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
删除XML节点
代码示例:
public void DelXML() { OpenFileDialog ofd = new OpenFileDialog(); //用 OpenFileDialog 类来打开文档 ofd.Filter = "XML文件(*.xml)|*.xml"; //筛选文件类型 if (ofd.ShowDialog() == DialogResult.OK) //显示对话框 判断用户是否点击打开按钮 { string path = ofd.FileName; //获取文件路径 XmlDocument doc = new XmlDocument(); //定义XML文档对象 doc.Load(path); //加载文件 XmlNodeList nodeList = doc.SelectNodes("/Class/Student"); //选择匹配 XPath 表达式的节点列表 if (nodeList.Count > 0) //获取nodeList节点数,若节点数大于0,则说明有节点,反之则为无节点 { for (int i = 0; i < nodeList.Count; i++) { XmlNode node = nodeList.Item(i); //把第i组节点赋值给node node.RemoveAll(); //移除当前所有子节点和属性 //RemoveChild()移除指定子节点 //ReplaceChild()替换子节点 } doc.Save(path); MessageBox.Show("删除Student下的子节点成功!"); } else { MessageBox.Show("没有在 '/Class/Student' 下获取到节点", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
将数据库表中的数据导出到XML文档
代码示例:
/// <summary> /// 将数据库表中的数据导出到XML文档 /// </summary> /// <param name="dt">数据</param> public void ExportXML(DataTable dt) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "xml文档|*.xml"; if (sfd.ShowDialog() == DialogResult.OK) { XmlDocument doc = new XmlDocument(); string path = sfd.FileName; //获取文件保存的路径 //创建xml文档的声明 doc.AppendChild(doc.CreateXmlDeclaration("1.0", "utf-8", "yes")); //创建xml文档的根节点 XmlElement rootNode = doc.CreateElement("Class"); //将根节点添加到xml文档中 doc.AppendChild(rootNode); for (int i = 0; i < dt.Rows.Count; i++) { //创建子节点 XmlElement childNode = doc.CreateElement("Target"); XmlElement element; for (int j = 0; j < dt.Columns.Count; j++) //循环表的列 { element = doc.CreateElement(dt.Columns[j].ToString().Trim()); //获取表的该列数据 element.InnerText = dt.Rows[i][j].ToString().Trim(); childNode.AppendChild(element); } rootNode.AppendChild(childNode); } doc.Save(path); MessageBox.Show("XML文档创建成功!"); } }
文章评论