今天,实现了一个遍历xml节点的函数,如下: 
protected void DisplayTree(XmlNode node)  //遍历整个xml的函数 

      if(node!=null) //如果node不为空 
     { 
                Format(node);  //对这个节点进行操作 
     } 
    if(node.HasChildNodes)  //如果该node还有孩子节点 
   { 
              node=node.FirstChild; 
             while(node!=null) 
            { 
                     DisplayTree(node); 
                    node=node.NextSibling; 
            } 
    } 


如果要对这个node进行某种操作,只要在Format函数中实现即可: 
void Format(System.Xml.XmlNode node) 

        Console.WriteLine(node.Name);   
        //显示各个节点的名称,如果是节点中的值,则显示 #TEXT. 

        if(node.Name==“Company“)  //如果这个节点的名称是Company 
        { 
                XmlNode nextnode = node.FirstNode;   
                //注意,是FirstNode,还不是NextSibingNextSibing则会跑到下一个节点去了 
                Console.WriteLine(nextnode.value);      
                 //显示节点为Company中的值 
        } 



下面一步:怎么得到函数需要的node对象: 
    在主函数中,可以这样使用DisplayTree函数: 
     XmlTextReader xmlread = new XmlTextReader(“e:\\bb.xml“); 
     XmlDocument xmldoc = new XmlDocument(); 
     xmldoc.Load(xmlread);  
            //Load参数可以代入文件名,流等对象如:xmldoc.Load(“E:\bb.xml“) 
    DisPlayTree(xmldoc.DocumentElement); 


.对XML进行更新操作: 
        与Format函数很相似,如果想更新COMPANY中的值,则需要如此: 
    void Update(XmlNode node) 

        if(node.Name==“COMPANY“) 
        { 
                XmlNode nextnode = node.FirstChild; 
                nextnode.Value=“needvalue“; 
        } 


最后,只要用xmldoc.save(“e:\\bb.xml“)即可进行更新了,参数可以是XmlWriter对象或是文件名 


下面是写的详细代码: 
protected void Format(XmlNode node) 
  { 
   if(node.Name=="COMPANY")  //如果是调委会工作单位及职务的话 
   { 
    //XmlNode nextnode = node.FirstChild; 
    ListBox1.Items.Add(node.InnerText);  //显示COMPANY节点的值 
   } 
   //ListBox1.Items.Add(node.Name+" "+node.Value); 
  } 

  protected void Update(XmlNode node) 
  {  //更新节点的值 
   if(node.Name=="COMPANY") 
   { 
    XmlNode nextnode = node.FirstChild; 
    nextnode.Value="雷迅公司"; 
   } 
  } 

  protected void DisplayTree(XmlNode node)  //遍历整个xml的函数 
  { 
   if(node!=null) //如果node不为空 
   { 
    Format(node);  //则格式化这个node以输出 
    //Update(node); 
   } 
   if(node.HasChildNodes)  //如果该node还有孩子节点 
   { 
    node=node.FirstChild; 
    while(node!=null) 
    { 
     DisplayTree(node); 
     node=node.NextSibling; 
    } 
   } 

  }

  private void Page_Load(object sender, System.EventArgs e) 
  { 
   // 在此处放置用户代码以初始化页面 
   if(!IsPostBack) 
   { 
    System.Xml.XmlTextReader xmlread = new XmlTextReader("e:\\bb.xml"); 
    XmlDocument xmldoc = new XmlDocument(); 
    xmldoc.Load("e:\\bb.xml"); 
    System.Xml.XmlNode node = xmldoc.DocumentElement; 
    DisplayTree(node); 
    xmlread.Close(); 
     

    XmlNodeList xmllist = xmldoc.SelectNodes("FILE/YEARPLAN"); 
    foreach(XmlNode yearplan in xmllist) 
    { 
     ListBox1.Items.Add(yearplan.InnerText); 
     //yearplan.LastChild.Value="EEEEEE"; 
    } 
    //xmldoc.Save("e:\\bb.xml"); 
   } 
    
  } 



文章来自: 转载
posted on 2007-02-14 16:36  mbskys  阅读(189)  评论(0)    收藏  举报