XML操作
发布时间:2020-12-16 05:53:31 所属栏目:百科 来源:网络整理
导读:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Xml;namespace xmlTest{ public partial class Form1
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; namespace xmlTest { public partial class Form1 : Form { string myXMLFilePath = "E:MyComputers.xml"; //存放该文件的路径必须存在 public Form1() { InitializeComponent(); } private static void GenerateXMLFile(string xmlFilePath)//生成xml文件 { try { //初始化一个xml实例 XmlDocument myXmlDoc = new XmlDocument(); //创建xml的根节点 XmlElement rootElement = myXmlDoc.CreateElement("Computers");//lishk必须将根节点加入后再保存才会出现文件 //将根节点加入到xml文件中(AppendChild) myXmlDoc.AppendChild(rootElement);// //结果: //<Computers /> //初始化第一层的第一个子节点 XmlElement firstLevelElement1 = myXmlDoc.CreateElement("Computer"); //填充第一层的第一个子节点的属性值(SetAttribute) firstLevelElement1.SetAttribute("ID","22222111"); firstLevelElement1.SetAttribute("Description","Made in China"); //将第一层的第一个子节点加入到根节点下 rootElement.AppendChild(firstLevelElement1); //结果: //<Computers> // <Computer ID="22222111" Description="Made in China" /> //</Computers> ////初始化第二层的第一个子节点 XmlElement secondLevelElement11 = myXmlDoc.CreateElement("name"); //填充第二层的第一个子节点的值(InnerText) secondLevelElement11.InnerText = "Lenovo"; firstLevelElement1.AppendChild(secondLevelElement11); XmlElement secondLevelElement12 = myXmlDoc.CreateElement("price"); secondLevelElement12.InnerText = "5000"; firstLevelElement1.AppendChild(secondLevelElement12); //结果: //<Computers> // <Computer ID="22222111" Description="Made in China"> // <name>Lenovo</name> // <price>5000</price> // </Computer> //</Computers> XmlElement firstLevelElement2 = myXmlDoc.CreateElement("Computer"); firstLevelElement2.SetAttribute("ID","2222222"); firstLevelElement2.SetAttribute("Description","Made in USA"); rootElement.AppendChild(firstLevelElement2); XmlElement secondLevelElement21 = myXmlDoc.CreateElement("name"); secondLevelElement21.InnerText = "IBM"; firstLevelElement2.AppendChild(secondLevelElement21); XmlElement secondLevelElement22 = myXmlDoc.CreateElement("price"); secondLevelElement22.InnerText = "10000"; firstLevelElement2.AppendChild(secondLevelElement22); //结果: //<Computers> // <Computer ID="22222111" Description="Made in China"> // <name>Lenovo</name> // <price>5000</price> // </Computer> // <Computer ID="2222222" Description="Made in USA"> // <name>IBM</name> // <price>10000</price> // </Computer> //</Computers> //将xml文件保存到指定的路径下 myXmlDoc.Save(xmlFilePath);//lishk必须保存才会生成xml文件 } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } private static void GetXMLInformation(string xmlFilePath)//获取Xml信息 { try { //初始化一个xml实例 XmlDocument myXmlDoc = new XmlDocument(); //加载xml文件(参数为xml文件的路径) myXmlDoc.Load(xmlFilePath); //获得第一个姓名匹配的节点(SelectSingleNode):此xml文件的根节点 XmlNode rootNode = myXmlDoc.SelectSingleNode("Computers"); //分别获得该节点的InnerXml和OuterXml信息 string innerXmlInfo = rootNode.InnerXml.ToString(); string outerXmlInfo = rootNode.OuterXml.ToString();//所有文件信息都出来,包括节点Computers //获得该节点的子节点(即:该节点的第一层子节点) XmlNodeList firstLevelNodeList = rootNode.ChildNodes; foreach (XmlNode node in firstLevelNodeList) { //获得该节点的属性集合 XmlAttributeCollection attributeCol = node.Attributes; foreach (XmlAttribute attri in attributeCol) { //获取属性名称与属性值 string name = attri.Name; string value = attri.Value; Console.WriteLine("{0} = {1}",name,value); } //判断此节点是否还有子节点 if (node.HasChildNodes) { //获取该节点的第一个子节点 XmlNode secondLevelNode1 = node.FirstChild; //获取该节点的名字 string name = secondLevelNode1.Name; //获取该节点的值(即:InnerText) string innerText = secondLevelNode1.InnerText; Console.WriteLine("{0} = {1}",innerText); //获取该节点的第二个子节点(用数组下标获取) XmlNode secondLevelNode2 = node.ChildNodes[1]; name = secondLevelNode2.Name; innerText = secondLevelNode2.InnerText; Console.WriteLine("{0} = {1}",innerText); } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } private static void ModifyXmlInformation(string xmlFilePath)//更改xml信息 { try { XmlDocument myXmlDoc = new XmlDocument(); myXmlDoc.Load(xmlFilePath); XmlNode rootNode = myXmlDoc.FirstChild; XmlNodeList firstLevelNodeList = rootNode.ChildNodes; foreach (XmlNode node in firstLevelNodeList) { //修改此节点的属性值 if (node.Attributes["Description"].Value.Equals("Made in USA")) { node.Attributes["Description"].Value = "Made in HongKong"; } } //要想使对xml文件所做的修改生效,必须执行以下Save方法 myXmlDoc.Save(xmlFilePath); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } private static void AddXmlInformation(string xmlFilePath)//添加xml信息 { try { XmlDocument myXmlDoc = new XmlDocument(); myXmlDoc.Load(xmlFilePath); //添加一个带有属性的节点信息 foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes) { XmlElement newElement = myXmlDoc.CreateElement("color"); newElement.InnerText = "black"; newElement.SetAttribute("IsMixed","Yes"); node.AppendChild(newElement); } //保存更改 myXmlDoc.Save(xmlFilePath); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } private static void DeleteXmlInformation(string xmlFilePath)//删除xml信息 { try { XmlDocument myXmlDoc = new XmlDocument(); myXmlDoc.Load(xmlFilePath); foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes) { //记录该节点下的最后一个子节点(简称:最后子节点) XmlNode lastNode = node.LastChild; //删除最后子节点下的左右子节点 lastNode.RemoveAll(); //删除最后子节点 node.RemoveChild(lastNode); } //保存对xml文件所做的修改 myXmlDoc.Save(xmlFilePath); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } private void btnCreateXmlFile_Click(object sender,EventArgs e)//生成xml文件 { try { //xml文件存储路径 //string myXMLFilePath = "E:MyComputers.xml"; //存放该文件的路径必须存在 //生成xml文件 GenerateXMLFile(myXMLFilePath); ////修改xml文件的信息 //ModifyXmlInformation(myXMLFilePath); ////向xml文件添加节点信息 //AddXmlInformation(myXMLFilePath); ////删除指定节点信息 //DeleteXmlInformation(myXMLFilePath); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } private void btnGetInfo_Click(object sender,EventArgs e) { //遍历xml文件的信息 GetXMLInformation(myXMLFilePath); } /* //所需要添加的命名空间 using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(“xml文件路径path”); //指定一个节点 XmlNode root=xml.SelectSingleNode("节点名称"); //获取节点下所有直接子节点 XmlNodeList childlist=root.ChildNodes; //判断该节点下是否有子节点 root.HasChildNodes; //获取同名同级节点集合 XmlNodeList nodelist=xml.SelectNodes("节点名称"); //生成一个新节点 XmlElement node=xml.CreateElement("节点名称"); //将节点加到指定节点下,作为其子节点 root.AppendChild(node); //将节点加到指定节点下某个子节点前 root.InsertBefore(node,root.ChildeNodes[i]); //为指定节点的新建属性并赋值 node.SetAttribute("id","22222"); //为指定节点添加子节点 root.AppendChild(node); //获取指定节点的指定属性值 string id=node.Attributes["id"].Value; //获取指定节点中的文本 string content=node.InnerText; //保存XML文件 xml.Save(“xml文件存储的路径path”);*/ } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |