c#操作xml的完整例子

1、xml文件:

  • <?xml version="1.0" encoding="UTF-8"?>  
  • <books>  
  •  <book>  
  •   <name>哈里波特</name>  
  •   <price>10</price>  
  •   <memo>这是一本很好看的书。</memo>  
  •  </book>  
  •  <book id="B02">  
  •   <name>三国演义</name>  
  •   <price>10</price>  
  •   <memo>四大名著之一。</memo>  
  •  </book>  
  •  <book id="B03">  
  •   <name>水浒</name>  
  •   <price>6</price>  
  •   <memo>四大名著之一。</memo>  
  •  </book>  
  •  <book id="B04">  
  •   <name>红楼</name>  
  •   <price>5</price>  
  •   <memo>四大名著之一。</memo>  
  •  </book>  
  • </books>  
  • 2、c#代码:

    1. using System;   
    2. using System.Collections.Generic;   
    3. using System.Text;   
    4. using System.Xml;   
    5.   
    6. namespace TestXml   
    7. {   
    8.     class Program   
    9.     {   
    10.         static void Main(string[] args)   
    11.         {   
    12.             XmlElement theBook = null, theElem = null, root = null;   
    13.             XmlDocument xmldoc = new XmlDocument();   
    14.             try  
    15.             {   
    16.                 xmldoc.Load("Books.xml");   
    17.                 root = xmldoc.DocumentElement;   
    18.   
    19.                 //---  新建一本书开始 ----   
    20.                 theBook = xmldoc.CreateElement("book");   
    21.                 theElem = xmldoc.CreateElement("name");   
    22.                 theElem.InnerText = "新书";   
    23.                 theBook.AppendChild(theElem);   
    24.   
    25.                 theElem = xmldoc.CreateElement("price");   
    26.                 theElem.InnerText = "20";   
    27.                 theBook.AppendChild(theElem);   
    28.   
    29.                 theElem = xmldoc.CreateElement("memo");   
    30.                 theElem.InnerText = "新书更好看。";   
    31.                 theBook.AppendChild(theElem);   
    32.                 root.AppendChild(theBook);   
    33.                 Console.Out.WriteLine("---  新建一本书开始 ----");   
    34.                 Console.Out.WriteLine(root.OuterXml);   
    35.                 //---  新建一本书完成 ----   
    36.   
    37.                 //---  下面对《哈里波特》做一些修改。 ----   
    38.                 //---  查询找《哈里波特》----   
    39.                 theBook = (XmlElement)root.SelectSingleNode("/books/book[name='哈里波特']");   
    40.                 Console.Out.WriteLine("---  查找《哈里波特》 ----");   
    41.                 Console.Out.WriteLine(theBook.OuterXml);   
    42.                 //---  此时修改这本书的价格 -----   
    43.                 theBook.GetElementsByTagName("price").Item(0).InnerText = "15";//getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,GetElementsByTagName("price")相当于SelectNodes(".//price")。   
    44.                 Console.Out.WriteLine("---  此时修改这本书的价格 ----");   
    45.                 Console.Out.WriteLine(theBook.OuterXml);   
    46.                 //---  另外还想加一个属性id,值为B01 ----   
    47.                 theBook.SetAttribute("id""B01");   
    48.                 Console.Out.WriteLine("---  另外还想加一个属性id,值为B01 ----");   
    49.                 Console.Out.WriteLine(theBook.OuterXml);   
    50.                 //---  对《哈里波特》修改完成。 ----   
    51.   
    52.                 //---  再将所有价格低于10的书删除  ----   
    53.                 theBook = (XmlElement)root.SelectSingleNode("/books/book[@id='B02']");   
    54.                 Console.Out.WriteLine("---  要用id属性删除《三国演义》这本书 ----");   
    55.                 Console.Out.WriteLine(theBook.OuterXml);   
    56.                 theBook.ParentNode.RemoveChild(theBook);   
    57.                 Console.Out.WriteLine("---  删除后的XML ----");   
    58.                 Console.Out.WriteLine(xmldoc.OuterXml);   
    59.   
    60.                 //---  再将所有价格低于10的书删除  ----   
    61.                 XmlNodeList someBooks = root.SelectNodes("/books/book[price<10]");   
    62.                 Console.Out.WriteLine("---  再将所有价格低于10的书删除  ---");   
    63.                 Console.Out.WriteLine("---  符合条件的书有 " + someBooks.Count + "本。  ---");   
    64.   
    65.                 for (int i = 0; i < someBooks.Count; i++)   
    66.                 {   
    67.                     someBooks.Item(i).ParentNode.RemoveChild(someBooks.Item(i));   
    68.                 }   
    69.                 Console.Out.WriteLine("---  删除后的XML ----");   
    70.                 Console.Out.WriteLine(xmldoc.OuterXml);   
    71.   
    72.                 xmldoc.Save("books.xml");//保存到books.xml   
    73.   
    74.                 Console.In.Read();   
    75.             }   
    76.             catch (Exception e)   
    77.             {   
    78.                 Console.Out.WriteLine(e.Message);   
    79.             }   
    80.         }   
    81.     }   
    82. }  

    posted @ 2010-09-15 10:02  systemxgl  阅读(294)  评论(0编辑  收藏  举报