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


       现在各大数据库公司都在开发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. }  
  • 相关阅读:
    功能强大的T4文本模版
    C#中.snk文件的作用
    ASP.NET MVC中实现多个按钮提交的几种方法
    asp.net mvc强大的分页控件MvcPager
    设计模式—观察者模式
    Http响应码

    编码习惯
    vim 快捷键 转
    makefilevvhttp://www.tudou.com/programs/view/e3Z8RbxFIZE/
  • 原文地址:https://www.cnblogs.com/wangyhua/p/4050553.html
Copyright © 2020-2023  润新知