.net中遍历xml函数

今天,实现了一个遍历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");
   }
   
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值