从今天开始学习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(">",">").Replace("<","<");
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>测试<br>------------------------------------<br><FONT color='red'>sek回复如下:</font><br>测试</content>
<homepage>www.sekweb.net</homepage>
<email>sekone1@163.com</email>
<qq>151880692</qq>
<time>2005-8-4 16:20:48</time>
</user>
</users>
<users>
<user>
<id>6</id>
<name>sek</name>
<face>imgs/face/06.gif</face>
<title>测试</title>
<content>测试<br>------------------------------------<br><FONT color='red'>sek回复如下:</font><br>测试</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(">",">");
str=str.Replace("<","<");
char ch;
ch=(char)32;
str=str.Replace(ch.ToString()," ");
ch=(char)34;
str=str.Replace(ch.ToString(),""");
ch=(char)39;
str=str.Replace(ch.ToString(),"'");
ch=(char)13;
str=str.Replace(ch.ToString(),"");
ch=(char)10;
return str;
}
{
str=str.Replace(">",">");
str=str.Replace("<","<");
char ch;
ch=(char)32;
str=str.Replace(ch.ToString()," ");
ch=(char)34;
str=str.Replace(ch.ToString(),""");
ch=(char)39;
str=str.Replace(ch.ToString(),"'");
ch=(char)13;
str=str.Replace(ch.ToString(),"");
ch=(char)10;
return str;
}
本文版权属于王传炜所有,首发http://www.cnblogs.com/,转载请注明出处。