从今天开始学习XML(一)


     打算从今天开始学习XML,到网上搜了些资料,下了些电子书籍,看得我头大。于是我就下了点代码研究下。
     用GOOGLE搜了个ASP.NET+XML做的留言版,看了下代码,看到基本的XML操作
1。删除节点

    XmlDocument doc=new XmlDocument();
   doc.Load("data/guestbook.xml");
   XmlNode user;
   XmlNode root=doc.DocumentElement;
   user=root.SelectSingleNode("user[id="+id+"]");
   root.RemoveChild(user);
   doc.Save("data/guestbook.xml");
 
2。更新节点
   XmlDocument doc=new XmlDocument();
   doc.Load("data/guestbook.xml");
   XmlNode root=doc.DocumentElement;
   XmlNode user=root.SelectSingleNode("user[id="+id+"]");
   XmlNode content=user.SelectSingleNode("content");
   string reply=(TextBox)e.Item.FindControl("tbreply")).Text;
   content.InnerText=content.InnerText+reply;
   doc.Save("data/guestbook.xml");

3。填加节点
    XmlDocument doc=new XmlDocument();
   doc.Load("data/guestbook.xml");
   XmlElement root=doc.DocumentElement;//获取根节点
   XmlElement elemuser=doc.CreateElement("user");
   XmlElement elemid=doc.CreateElement("id");
   elemuser.AppendChild(elemid);

   int id=0;
   if(root.HasChildNodes)
   {
    id=int.Parse(root.LastChild.FirstChild.InnerText)+1;
   }
   else {id=1;}
   root.AppendChild(elemuser);
   elemid.InnerText=id.ToString();

  
XmlElement elem2=doc.CreateElement("name");
   elem2.InnerText=tbname.Text.Replace(">","&gt;").Replace("<","&lt;");
   elemuser.AppendChild(elem2);

注意:节点下的第一个元素和第二个元素填加时的差异。一个是root.AppendChild(elemuser);一个是elemuser.AppendChild(elem2);

   .................................

  
   XmlElement elem9=doc.CreateElement("time");
   elem9.InnerText=DateTime.Now.ToString();
   elemuser.AppendChild(elem9);
   doc.Save("data/guestbook.xml");

相关XML文件如下:

<?xml version="1.0" encoding="gb2312"?>
<users>
  
<user>
    
<id>6</id>
    
<name>sek</name>
    
<face>imgs/face/06.gif</face>
    
<title>测试</title>
    
<content>测试&lt;br&gt;------------------------------------&lt;br&gt;&lt;FONT color='red'&gt;sek回复如下:&lt;/font&gt;&lt;br&gt;测试</content>
    
<homepage>www.sekweb.net</homepage>
    
<email>sekone1@163.com</email>
    
<qq>151880692</qq>
    
<time>2005-8-4 16:20:48</time>
  
</user>
</users>

这里有点要注意的是<.>是XML中的关键字,要用替换的方法,
C#函数如下:
private string htmlencode(string str)
{
   str
=str.Replace(">","&gt;");
   str
=str.Replace("<","&lt;");
   
char ch;
   ch
=(char)32;
   str
=str.Replace(ch.ToString(),"&nbsp;");
   ch
=(char)34;
   str
=str.Replace(ch.ToString(),"&quot;");
   ch
=(char)39;
   str
=str.Replace(ch.ToString(),"&#39;");
   ch
=(char)13;
   str
=str.Replace(ch.ToString(),"");
   ch
=(char)10;
   
return str;
        }
posted @ 2005-11-26 15:35  王传炜  阅读(202)  评论(0编辑  收藏  举报