C# Xml文档操作快速上手(.net 2.0)

来源:互联网 发布:bong app软件下载 编辑:程序博客网 时间:2024/06/11 20:34

C# Xml文档操作快速上手

   现在各大数据库公司都在开发Xml数据库(非关系型),而C#将对Xml的操作集成到了语言中,使得程序操作Xml 十分简便,现在让你快速上手Xml操作。 
首先我们要知道Xml是树形结构,所以节点的概念十分重要。我们先要知道这些方法和类,具体的应用见下面的代码。 

XmlDocument Xml文档类 
     重要方法有: 
         Load(xmlPath);   //载入Xml文档,xmlPath为路径 
         Save(xmlPath);   //保存Xml文档 
     重要属性 
          DocumentElement  //根节点 

XmlElement 节点类 
     重要方法: 
         PrependChild(XmlElement childNode); //将childNode 添加到当前节点的第一个子节点 
         AppendChild(XmlElement childNode); //将childNode 添加到当前节点的最后一个子节点 
         SetAttribute(string "属性名",string "属性值");//设置当前节点属性 
         SelectNodes(string 条件);  //通过条件得到子节点,若有多个,返回第一个具体见代码 
         SelectSingleNode();      //意义同上,返回所有节点  xmlNodeList类 
         
     重要属性: 
          InnerText          //节点中的内容 
          ChildNodes         //所有子节点  xmlNodeList类 
          ParentNode        //父节点 

先往一个Xml文档写入,再读取其中的内容 
C#代码  收藏代码
  1.      
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Linq;  
  5. using System.Text;  
  6. using System.Xml;  
  7.   
  8. namespace XmlDeal  
  9. {  
  10.     //操作Xml文档  
  11.     class XmlDeal  
  12.     {  
  13.         private XmlDocument doc;  
  14.         private string xmlPath = "C:\\Users\\Administrator\\Desktop\\test.xml";  
  15.         public XmlDeal() {  
  16.             doc = new XmlDocument();  
  17.             //加载 Xml(在这之前,你得确保xml中有一个根节点,否则会报错),还可以用流来加载,这里就不演示了  
  18.             doc.Load(xmlPath);  
  19.         }  
  20.         public void xmlWrite() {  
  21.             //移除根节点下的所有节点  
  22.   
  23.             doc.DocumentElement.RemoveAll();  
  24.               
  25.             //注意如果按下面的写法写的话,会有一些节点没有被删除,以为根节点的子节点的count在变化,读者好好体会吧  
  26.             //foreach (XmlElement rootNode in doc.DocumentElement.ChildNodes) {  
  27.             //    rootNode.ParentNode.RemoveChild(rootNode);  
  28.             //}  
  29.   
  30.             XmlElement node = doc.CreateElement("小说");  
  31.             //设置属性  
  32.             node.SetAttribute("序号","1");  
  33.   
  34.             //新建子节点  
  35.             XmlElement childNode1 = doc.CreateElement("书名");  
  36.             node.PrependChild(childNode1);  
  37.             childNode1.InnerText = "哈利 波特";  
  38.             //插入到父节点的末尾  
  39.             node.AppendChild(childNode1);  
  40.   
  41.             XmlElement childNode2 = doc.CreateElement("作者");  
  42.             node.PrependChild(childNode2);  
  43.             childNode2.InnerText = "杰克 罗琳";  
  44.             node.AppendChild(childNode2);  
  45.   
  46.             XmlElement node2 = doc.CreateElement("小说");  
  47.             node2.SetAttribute("序号""2");  
  48.   
  49.             //新建子节点  
  50.             XmlElement childNode21 = doc.CreateElement("书名");  
  51.             node.PrependChild(childNode21);  
  52.             childNode21.InnerText = "致青春";  
  53.             //插入到父节点的末尾  
  54.             node2.AppendChild(childNode21);  
  55.   
  56.             XmlElement childNode22 = doc.CreateElement("作者");  
  57.             node.PrependChild(childNode22);  
  58.             childNode22.InnerText = "辛夷坞";  
  59.             node2.AppendChild(childNode22);  
  60.   
  61.   
  62.             //获取文档的根节点,并将 node 添加到根节点的子节点的开头,注意append 不会覆盖以前的数据  
  63.             doc.DocumentElement.AppendChild(node);  
  64.             doc.DocumentElement.AppendChild(node2);  
  65.             doc.Save(xmlPath);  
  66.         }  
  67.   
  68.         //查找读入xml中的信息  
  69.         public void xmlRead() {  
  70.             //得到父节点  
  71.             XmlElement root = doc.DocumentElement;  
  72.   
  73.             //得到文本中内容的方法一,通过不断获得子节点获得其中的内容  
  74.             XmlNodeList nodeList = root.ChildNodes;  
  75.             foreach(XmlElement node in nodeList){  
  76.                 foreach(XmlElement child in node.ChildNodes){  
  77.                     Console.WriteLine(child.InnerText);  
  78.                 }  
  79.             }  
  80.   
  81.             Console.WriteLine();  
  82.   
  83.             //得到文本中的内容的方法二,通过表达式,读者可以比较下区别  
  84.             XmlNode node1 = doc.SelectSingleNode("/Book/小说/书名");  
  85.             Console.WriteLine(node1.InnerText);  
  86.   
  87.             //[]中的是条件格式为  节点[@属性名='属性值']  
  88.             XmlNode node2 = doc.SelectSingleNode("/Book/小说[@序号= '2']/书名");  
  89.             Console.WriteLine(node2.InnerText);  
  90.   
  91.             //通过节点名获得属性值  
  92.               Console.WriteLine(node2.Attributes["序号"].Value);  
  93.               
  94.         }  
  95.         public static void Main(string[] args) {  
  96.             XmlDeal xmlDeal = new XmlDeal();  
  97.             xmlDeal.xmlWrite();  
  98.             xmlDeal.xmlRead();  
  99.             while (true) { }  
  100.         }  
  101.     }  
  102.       
  103.   
  104. }  
0 0
原创粉丝点击