访问XML节点的过程

原创 2006年05月31日 12:17:00
我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。
 
已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
  </book>
</bookstore>
 
1、往<bookstore>节点中插入一个<book>节点:
   XmlDocument xmlDoc=new XmlDocument();
   xmlDoc.Load("bookstore.xml");
   XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
   XmlElement xe1=xmlDoc.CreateElement("book");//创建一个<book>节点
   xe1.SetAttribute("genre","李赞红");//设置该节点genre属性
   xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性
 
   XmlElement xesub1=xmlDoc.CreateElement("title");
   xesub1.InnerText="CS从入门到精通";//设置文本节点
   xe1.AppendChild(xesub1);//添加到<book>节点中
   XmlElement xesub2=xmlDoc.CreateElement("author");
   xesub2.InnerText="候捷";
   xe1.AppendChild(xesub2);
   XmlElement xesub3=xmlDoc.CreateElement("price");
   xesub3.InnerText="58.3";
   xe1.AppendChild(xesub3);
 
   root.AppendChild(xe1);//添加到<bookstore>节点中
   xmlDoc.Save("bookstore.xml");
//===============================================
结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
  </book>
  <book genre="李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>候捷</author>
    <price>58.3</price>
  </book>
</bookstore>
 
2、修改节点:将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点<author>的文本修改为“亚胜”。
    XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点
   foreach(XmlNode xn in nodeList)//遍历所有子节点
   {
    XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
    if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”
    {
     xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”
 
     XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点
     foreach(XmlNode xn1 in nls)//遍历
     {
      XmlElement xe2=(XmlElement)xn1;//转换类型
      if(xe2.Name=="author")//如果找到
      {
       xe2.InnerText="亚胜";//则修改
       break;//找到退出来就可以了
      }
     }
     break;
    }
   }
 
   xmlDoc.Save("bookstore.xml");//保存。
//==================================================
最后结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book genre="fantasy" ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
  </book>
  <book genre="update李赞红" ISBN="2-3631-4">
    <title>CS从入门到精通</title>
    <author>亚胜</author>
    <price>58.3</price>
  </book>
</bookstore>
 
3、删除 <book genre="fantasy" ISBN="2-3631-4">节点的genre属性,删除 <book genre="update李赞红" ISBN="2-3631-4">节点。
XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
 
   foreach(XmlNode xn in xnl)
   {
    XmlElement xe=(XmlElement)xn;
    if(xe.GetAttribute("genre")=="fantasy")
    {
     xe.RemoveAttribute("genre");//删除genre属性
    }
    else if(xe.GetAttribute("genre")=="update李赞红")
    {
     xe.RemoveAll();//删除该节点的全部内容
    }
   }
   xmlDoc.Save("bookstore.xml");
//===========================================
最后结果为:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
  <book ISBN="2-3631-4">
    <title>Oberon's Legacy</title>
    <author>Corets, Eva</author>
    <price>5.95</price>
  </book>
  <book>
  </book>
</bookstore>
 
4、显示所有数据。
   XmlNode xn=xmlDoc.SelectSingleNode("bookstore");
 
   XmlNodeList xnl=xn.ChildNodes;
  
   foreach(XmlNode xnf in xnl)
   {
    XmlElement xe=(XmlElement)xnf;
    Console.WriteLine(xe.GetAttribute("genre"));//显示属性值
    Console.WriteLine(xe.GetAttribute("ISBN"));
 
    XmlNodeList xnf1=xe.ChildNodes;
    foreach(XmlNode xn2 in xnf1)
    {
     Console.WriteLine(xn2.InnerText);//显示子节点点文本
    }
   }

XML编程

在现代的开发之中,XML技术无处不在,在各个开发框架中,也都到处充斥着XML配置文件的身影。本课程将为读者讲解XML的产生背景,并且详细分析了HTML与XML的区别、XML核心语法,重点在于XML的解析技术(DOM、SAX、DOM4J工具),同时讲解了如何在HTML页面利用JavaScript进行DOM解析实现页面动态开发。官方QQ群:612148723。
  • 2016年12月31日 23:18

C# xml操作

  • 2011年09月19日 12:49
  • 58KB
  • 下载

基本DELPHI中XML编程--简单节点增删改查

XML文档简单读写方法CST 2005-07-08最近参加一个项目需要写XML,因此我开始学习XML在delphi中的编程方法,我将我STEP BY STEP的入门过程记录下来,希望经验丰富的前辈能给...
  • mrtechno
  • mrtechno
  • 2005-07-16 00:16:00
  • 5306

as3之访问XML元素和属性

在as3中,也可以使用点运算符和@运算符来访问XML的元素和属性。下面示例:var myxml:XML= as编程 450-650;//输出book节点下name属性的值trace(myxml.boo...
  • yinyiniao
  • yinyiniao
  • 2009-12-12 19:20:00
  • 1209

好记性不如烂笔头60-利用XMLConfiguration解析XML多节点

利用XMLConfiguration解析XML多节点.1、 用XMLConfiguration解析XML多节点的源代码package test.ffm83.commons.configuration;...
  • ffm83
  • ffm83
  • 2015-03-12 09:23:16
  • 1514

初次学习XML的一个成功的实例

初次学习XML文件读写,苦于找不到可用的例子,研究了几天后略懂一二,把几个我做测试用的两个小例子公布出来,并按照自己的理解添加上了注释,抛砖引玉共同学习进步。 在高手看来这样的例子实在太简单,而且可能...
  • xiajian2010
  • xiajian2010
  • 2012-12-11 16:47:27
  • 1218

Java XML使用Dom4J从指定节点下寻找指定不重复名称的单节点

在使用Java的时候,发现获得指定节点的名称的时候不太方便,索性写了一个方法,方法如下: public static Element getNode(Element node,String ...
  • u012046327
  • u012046327
  • 2015-02-13 15:41:16
  • 1140

C#访问Xml 关于Foreach 和For循环

foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容以避免产生不可预知的副作用。foreach要求集合中的内容...
  • sweatlove
  • sweatlove
  • 2007-07-07 01:03:00
  • 658

Flex获取操作XML示例

Flex获取操作XML示例 些示例演示了FLEX对XML的一般操作操作符说明:    /****** ".","[]","..","@" 四个常用的E4X操作符 ******/    //使用"."操...
  • jiang1984j
  • jiang1984j
  • 2010-07-21 10:47:00
  • 2789

php使用DOMDocument的时候如何判断xml中某节点是否存在

php利用DOMDocument处理XML文件时,有时候需要判断某个节点是否存在,但是DOMDocument并没有专门的方法去做这样的判断,可以通过判断该节点的长度去判断该节点是否存在,如果该节点长度...
  • u013156691
  • u013156691
  • 2017-11-28 14:50:07
  • 168
收藏助手
不良信息举报
您举报文章:访问XML节点的过程
举报原因:
原因补充:

(最多只允许输入30个字)