• xml 文件解析基础


    转载地址:http://blog.csdn.net/s98/article/details/140307

    我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。
    已知有一个XML文件(bookstore.xml)如下:

    1 <?xml version="1.0" encoding="gb2312"?>
    2 <bookstore>
    3   <book genre="fantasy" ISBN="2-3631-4">
    4     <title>Oberon's Legacy</title>
    5     <author>Corets, Eva</author>
    6     <price>5.95</price>
    7   </book>
    8 </bookstore>

    1、往<bookstore>节点中插入一个<book>节点:

    View Code
     1 XmlDocument xmlDoc=new XmlDocument();
     2    xmlDoc.Load("bookstore.xml");
     3    XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
     4    XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点
     5    xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
     6    xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性
     7  
     8    XmlElement xesub1=xmlDoc.CreateElement("title");
     9    xesub1.InnerText="CS从入门到精通";//设置文本节点
    10    xe1.AppendChild(xesub1);//添加到<book>节点中
    11    XmlElement xesub2=xmlDoc.CreateElement("author");
    12    xesub2.InnerText="候捷";
    13    xe1.AppendChild(xesub2);
    14    XmlElement xesub3=xmlDoc.CreateElement("price");
    15    xesub3.InnerText="58.3";
    16    xe1.AppendChild(xesub3);
    17  
    18    root.AppendChild(xe1);//添加到<bookstore>节点中
    19    xmlDoc.Save("bookstore.xml");

    结果为:

    View Code
     1 <?xml version="1.0" encoding="gb2312"?>
     2 <bookstore>
     3   <book genre="fantasy" ISBN="2-3631-4">
     4     <title>Oberon's Legacy</title>
     5     <author>Corets, Eva</author>
     6     <price>5.95</price>
     7   </book>
     8   <book genre="李赞红" ISBN="2-3631-4">
     9     <title>CS从入门到精通</title>
    10     <author>候捷</author>
    11     <price>58.3</price>
    12   </book>
    13 </bookstore>

    2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。

    View Code
     1  XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
     2    foreach(XmlNode xn in nodeList)//遍历所有子节点
     3    {
     4     XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
     5     if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”
     6     {
     7      xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”
     8  
     9      XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
    10      foreach(XmlNode xn1 in nls)//遍历
    11      {
    12       XmlElement xe2=(XmlElement)xn1;//转换类型
    13       if(xe2.Name=="author")//如果找到
    14       {
    15        xe2.InnerText="亚胜";//则修改
    16        break;//找到退出来就可以了
    17       }
    18      }
    19      break;
    20     }
    21    }
    22  
    23    xmlDoc.Save("bookstore.xml");//保存。

    最后结果为:

    View Code
     1 <?xml version="1.0" encoding="gb2312"?>
     2 <bookstore>
     3   <book genre="fantasy" ISBN="2-3631-4">
     4     <title>Oberon's Legacy</title>
     5     <author>Corets, Eva</author>
     6     <price>5.95</price>
     7   </book>
     8   <book genre="update李赞红" ISBN="2-3631-4">
     9     <title>CS从入门到精通</title>
    10     <author>亚胜</author>
    11     <price>58.3</price>
    12   </book>
    13 </bookstore>

    3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。

    View Code
     1 XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
     2  
     3    foreach(XmlNode xn in xnl)
     4    {
     5     XmlElement xe=(XmlElement)xn;
     6  if(xe.GetAttribute("genre")=="fantasy")
     7     {
     8      xe.RemoveAttribute("genre");//删除genre属性
     9     }
    10     else if(xe.GetAttribute("genre")=="update李赞红")
    11     {
    12      xe.RemoveAll();//删除该节点的全部内容
    13     }
    14    }
    15    xmlDoc.Save("bookstore.xml");

    最后结果为:

    View Code
     1 <?xml version="1.0" encoding="gb2312"?>
     2 <bookstore>
     3   <book ISBN="2-3631-4">
     4     <title>Oberon's Legacy</title>
     5     <author>Corets, Eva</author>
     6     <price>5.95</price>
     7   </book>
     8   <book>
     9   </book>
    10 </bookstore>

    4、显示所有数据。

    View Code
     1 XmlNode xn=xmlDoc.SelectSingleNode("bookstore");
     2  
     3    XmlNodeList xnl=xn.ChildNodes;
     4    
     5    foreach(XmlNode xnf in xnl)
     6    {
     7     XmlElement xe=(XmlElement)xnf;
     8     Console.WriteLine(xe.GetAttribute("genre"));//显示属性值
     9     Console.WriteLine(xe.GetAttribute("ISBN"));
    10  
    11     XmlNodeList xnf1=xe.ChildNodes;
    12     foreach(XmlNode xn2 in xnf1)
    13     {
    14      Console.WriteLine(xn2.InnerText);//显示子节点点文本
    15     }
    16    }
  • 相关阅读:
    HDFS Java Client对hdfs文件增删查改
    Linux du查询文件大小
    Algorithms(4th)谢路云译大纲总结(附实现源码)
    百度开源e-chart初探
    由于java.util.Arrays.asList(...)导致的异常
    插入排序(1)——直接插入排序(insert sort)
    选择排序(2)——堆排序(heap sort)
    选择排序(1)——简单选择排序(selection sort)
    交换排序(2)——冒泡排序(bubble sort)
    ※交换排序(1)——快速排序(quick sort)
  • 原文地址:https://www.cnblogs.com/daidaigua/p/2511984.html
Copyright © 2020-2023  润新知