• C#操作XML小结


    1、简单介绍

     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"));

    二、具体实例

    在C#.net中如何操作XML
    需要添加的命名空间:
    using System.Xml;

    1、创建到服务器同名目录下的xml文件:

    方法一:

    1. XmlDocument xmldoc;  
    2.             XmlNode xmlnode;  
    3.             XmlElement xmlelem;  
    4.             xmldoc = new XmlDocument();  
    5.             //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>  
    6.             XmlDeclaration xmldecl;  
    7.             xmldecl = xmldoc.CreateXmlDeclaration("1.0""gb2312"null);  
    8.             xmldoc.AppendChild(xmldecl);  
    9.             //加入一个根元素  
    10.             xmlelem = xmldoc.CreateElement("""Employees""");  
    11.             xmldoc.AppendChild(xmlelem);  
    12.             //加入另外一个元素  
    13.             for (int i = 1; i < 3; i++)  
    14.             {  
    15.                 XmlNode root = xmldoc.SelectSingleNode("Employees");// 查找<Employees>  
    16.                 XmlElement xe1 = xmldoc.CreateElement("Node");//创建一个<Node>节点  
    17.                 xe1.SetAttribute("genre""李赞红");//设置该节点genre属性  
    18.                 xe1.SetAttribute("ISBN""2-3631-4");// 设置该节点ISBN属性  
    19.                 XmlElement xesub1 = xmldoc.CreateElement("title");  
    20.                 xesub1.InnerText = "CS从入门到精通";//设置文本节点  
    21.                 xe1.AppendChild(xesub1);//添加到<Node>节点中  
    22.                 XmlElement xesub2 = xmldoc.CreateElement("author");  
    23.                 xesub2.InnerText = "候捷";  
    24.                 xe1.AppendChild(xesub2);  
    25.                 XmlElement xesub3 = xmldoc.CreateElement("price");  
    26.                 xesub3.InnerText = "58.3";  
    27.                 xe1.AppendChild(xesub3);  
    28.                 root.AppendChild(xe1);//添加到<Employees>节点中  
    29.             }  
    30.             //保存创建好的XML文档  
    31.             xmldoc.Save("data.xml");   

    方法二:

    1. XmlTextWriter xmlWriter;  
    2.             string strFilename = "data1.xml";  
    3.             xmlWriter = new XmlTextWriter(strFilename, Encoding.Default);//创建一个xml文档  
    4.             xmlWriter.Formatting = Formatting.Indented;  
    5.             xmlWriter.WriteStartDocument();  
    6.             xmlWriter.WriteStartElement("Employees");  
    7.             xmlWriter.WriteStartElement("Node");  
    8.             xmlWriter.WriteAttributeString("genre""李赞红");  
    9.             xmlWriter.WriteAttributeString("ISBN""2-3631-4");  
    10.             xmlWriter.WriteStartElement("title");  
    11.             xmlWriter.WriteString("CS 从入门到精通");  
    12.             xmlWriter.WriteEndElement();  
    13.             xmlWriter.WriteStartElement("author");  
    14.             xmlWriter.WriteString("候捷");  
    15.             xmlWriter.WriteEndElement();  
    16.             xmlWriter.WriteStartElement("price");  
    17.             xmlWriter.WriteString("58.3");  
    18.             xmlWriter.WriteEndElement();  
    19.             xmlWriter.WriteEndElement();  
    20.             xmlWriter.Close();  

    2、添加一个结点

    1. XmlDocument xmlDoc = new XmlDocument();  
    2.            xmlDoc.Load("data.xml");  
    3.            XmlNode root = xmlDoc.SelectSingleNode("Employees");// 查找<Employees>  
    4.            XmlElement xe1 = xmlDoc.CreateElement("Node");//创建一个<Node>节点  
    5.            xe1.SetAttribute("genre""张三");//设置该节点genre属性  
    6.            xe1.SetAttribute("ISBN""1-1111-1");// 设置该节点ISBN属性  
    7.            XmlElement xesub1 = xmlDoc.CreateElement("title");  
    8.            xesub1.InnerText = "C#入门帮助";//设置文本节点  
    9.            xe1.AppendChild(xesub1);//添加到<Node>节点中  
    10.            XmlElement xesub2 = xmlDoc.CreateElement("author");  
    11.            xesub2.InnerText = "高手";  
    12.            xe1.AppendChild(xesub2);  
    13.            XmlElement xesub3 = xmlDoc.CreateElement("price");  
    14.            xesub3.InnerText = "158.3";  
    15.            xe1.AppendChild(xesub3);  
    16.            root.AppendChild(xe1);// 添加到<Employees>节点中  
    17.            xmlDoc.Save("data.xml");  

    3、修改结点的值(属性和子结点)

     

     

    4、修改结点(添加结点的属性和添加结点的自结点)

     

     

    5、删除结点中的某一个属性

     

     

    6、删除结点

     

     

    7、按照文本文件读取xml

     

    8、读取xml

     

     基础的操作就是这些,要是取三级或三级以上的节点,类似推导即可  

    1. //创建 XmlDocument对象  
    2. XmlDocument xmlDoc = new XmlDocument();  
    3. //载入xml文件名  
    4. xmlDoc.Load(filename);   
    5. //如果是xml字符串,则用以下形式  
    6. xmlDoc.LoadXml(xmldata);   
    7. //读取根节点的所有子节点,放到xn0中   
    8. XmlNodeList xn0 = xmlDoc.SelectSingleNode("Document").ChildNodes;   
    9. //查找二级节点的内容或属性   
    10. foreach (XmlNode node in xn0)  
    11. {  
    12.     if (node.Name == 匹配的二级节点名)  
    13.     {  
    14.         string innertext = node.InnerText.Trim();//匹配二级节点的内容  
    15.         string attr = node.Attributes[0].ToString();//属性  
    16.     }   
    17. }   
    1. System.IO.StreamReader myFile = new System.IO.StreamReader("data.xml", System.Text.Encoding.Default);  
    2.             //注意 System.Text.Encoding.Default  
    3.             string myString = myFile.ReadToEnd();//myString是读出的字符串  
    4.             this.textBox1.Text = myString;  
    5.             myFile.Close();  

     

    1. XmlDocument xmlDoc = new XmlDocument();  
    2.             xmlDoc.Load("data.xml");  
    3.             XmlNode root = xmlDoc.SelectSingleNode("Employees");  
    4.             XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;  
    5.             for (int i = 0; i < xnl.Count; i++)  
    6.             {  
    7.                 XmlElement xe = (XmlElement)xnl.Item(i);  
    8.                 if (xe.GetAttribute("genre") == "张三")  
    9.                 {  
    10.                     root.RemoveChild(xe);  
    11.                     if (i < xnl.Count) i = i - 1;  
    12.                 }  
    13.             }  
    14.             xmlDoc.Save("data.xml");   

    1. XmlDocument xmlDoc = new XmlDocument();  
    2.             xmlDoc.Load("data.xml");  
    3.             XmlNodeList xnl = xmlDoc.SelectSingleNode("Employees").ChildNodes;  
    4.             foreach (XmlNode xn in xnl)  
    5.             {  
    6.                 XmlElement xe = (XmlElement)xn;  
    7.                 xe.RemoveAttribute("genre");//删除 genre属性  
    8.                 XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点  
    9.                 foreach (XmlNode xn1 in nls)//遍历  
    10.                 {  
    11.                     XmlElement xe2 = (XmlElement)xn1;//转换类型  
    12.                     if (xe2.Name == "flag")//如果找到  
    13.                     {  
    14.                         xe.RemoveChild(xe2);//则删除  
    15.                     }  
    16.                 }  
    17.             }  
    18.             xmlDoc.Save("data.xml");   

    1. XmlDocument xmlDoc = new XmlDocument();  
    2.             xmlDoc.Load("data.xml");  
    3.             XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点  
    4.             foreach (XmlNode xn in nodeList)  
    5.             {  
    6.                 XmlElement xe = (XmlElement)xn;  
    7.                 xe.SetAttribute("test""111111");  
    8.                 XmlElement xesub = xmlDoc.CreateElement("flag");  
    9.                 xesub.InnerText = "1";  
    10.                 xe.AppendChild(xesub);  
    11.             }  
    12.             xmlDoc.Save("data.xml");  

     

    1. XmlDocument xmlDoc = new XmlDocument();  
    2.            xmlDoc.Load("data.xml");  
    3.            XmlNodeList nodeList = xmlDoc.SelectSingleNode("Employees").ChildNodes;//获取Employees节点的所有子节点  
    4.            foreach (XmlNode xn in nodeList)// 遍历所有子节点  
    5.            {  
    6.                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型  
    7.                if (xe.GetAttribute("genre") == "张三")//如果genre属性值为“张三”  
    8.                {  
    9.                    xe.SetAttribute("genre""update 张三");//则修改该属性为“update张三”  
    10.                    XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点  
    11.                    foreach (XmlNode xn1 in nls)//遍历  
    12.                    {  
    13.                        XmlElement xe2 = (XmlElement)xn1;//转换类型  
    14.                        if (xe2.Name == "author")//如果找到  
    15.                        {  
    16.                            xe2.InnerText = "亚胜";//则修改  
    17.                        }  
    18.                    }  
    19.                }  
    20.            }  
    21.            xmlDoc.Save("data.xml");//保存。  
  • 相关阅读:
    66. 缓存字节流
    65. 练习(拷贝图片--边读边写)
    64. 输出字节流(FileOutputStream)
    63. (FileInputStream)输入字节流
    62. File类常用方法
    61. File类
    60. 枚举
    快速排序
    归并排序
    初级排序算法
  • 原文地址:https://www.cnblogs.com/moss_tan_jun/p/1837925.html
Copyright © 2020-2023  润新知