[原创]C#操作XML文件的诸多技巧

来源:互联网 发布:java 数组 null 编辑:程序博客网 时间:2024/05/16 23:38
摘要:我最近开发一个项目的时候,遇到以下问题,在网上找了找,没有找着相关资料,于是自己研究,现在问题解决了,把源代码共享一下,供用得着的朋友参考。高手勿看,见不得人。
转载请注明来源:http://www.jhcode.com/ArticleView.asp?id=449

XML文件结构:

<?xml version="1.0" encoding="utf-8"?>
<bcaster>
 <item item_url="images/ads/1.jpg" link="http://www.jhcode.com">
 </item>
 <item item_url="images/ads/2.jpg" link="http://www.jhcode.com">
 </item>
 <item item_url="images/ads/3.jpg" link="http://www.jhcode.com">
 </item>
 <item item_url="images/ads/4.jpg" link="http://www.jhcode.com">
 </item>
</bcaster>


共用部份:

string filepath=Server.MapPath("ads/jhcode.xml");
System.Xml.XmlTextReader rd=new System.Xml.XmlTextReader(filepath);
System.Xml.XmlDocument XMLDom=new System.Xml.XmlDocument();
XMLDom.Load(rd);
System.Xml.XmlElement root=XMLDom.DocumentElement;
rd.Close();



1.添加XML数据到第一行:

System.Xml.XmlElement item=XMLDom.CreateElement("item");
item.SetAttribute("item_url","",Request.Form["tp"].ToString());
item.SetAttribute("link","",Request.Form["url"].ToString());
root.InsertBefore(item,root.FirstChild);
XMLDom.Save(filepath);//保存打开的的XML文件



2.读取XML数据列表:

strHTML+="<table border=/"0/" cellpadding=/"0/" cellspacing=/"0/">/r/n";
   strHTML+="<tr bgcolor=/"#f3f3f3/"> /r/n";
   strHTML+="<td width=/"169/" height=/"30/" style=/"padding-left:13px;/">图片</td>/r/n";
   strHTML+="<td width=/"368/">连接</td>/r/n";
   strHTML+="<td width=/"100/">排序</td>/r/n";
   strHTML+="<td width=/"69/">操作</td>/r/n";
   strHTML+="</tr>/r/n";
   int i=1;
   foreach(System.Xml.XmlNode cNode  in XMLDom.GetElementsByTagName("item"))  
   {  
    System.Xml.XmlAttributeCollection   attribColl   =   cNode.Attributes;  
    System.Xml.XmlAttribute attrib   =   attribColl["item_url",""]; 
    System.Xml.XmlAttribute attrib1  =   attribColl["link",""];
    string   url1   =attrib.Value;
    string  link1   =attrib1.Value;
    if(id.Length>0)
    {
     if(id==i.ToString())
     {
      url=link1;
      tp=url1;
     }
    }
    strHTML+="<tr> /r/n";
    strHTML+="<td height=/"92/"><img src=/"../" + url1 + "/" width=/"108/" height=/"82/" alt=/"/"></td>/r/n";
    strHTML+="<td>" + link1 + "</td>/r/n";
    strHTML+="<td>";
    if(cNode!=root.FirstChild)
     strHTML+="<a href=/"?act=up&id=" + i.ToString() + "/"><img src=/"images//up.gif/" alt=/"向上移动/" border=/"0/"></a>";
    if(i==1)
     strHTML+="&nbsp;&nbsp;&nbsp;";
    if(cNode!=root.LastChild)
     strHTML+="&nbsp;&nbsp;&nbsp;&nbsp;<a href=/"?act=down&id=" + i.ToString() + "/"><img src=/"images//down.gif/" alt=/"向下移动/" border=/"0/"></a>";
    strHTML+="</td>/r/n";
    strHTML+="<td><a href=/"?act=edit&id=" + i.ToString() + "/">编辑</a>&nbsp; <a href=/"?act=del&id=" + i.ToString() + "/"  onclick=/"return confirmdel('确定删除该广告吗?');/">删除</a></td>/r/n";
    strHTML+="</tr>/r/n";
    i+=1;
   }
   strHTML+="</table>/r/n";
Response.Write(strHTML);


3.向上移动

    if(Request.QueryString["act"].ToString()=="up")
    {     
     int y=root.ChildNodes.Count;
     for(int m=0;m     {
      if(m+1==Int32.Parse(id)) root.InsertBefore(XMLDom.GetElementsByTagName("item")[m], XMLDom.GetElementsByTagName("item")[m-1]);
       //root.RemoveChild(XMLDom.GetElementsByTagName("item")[m]);
     }
     XMLDom.Save(filepath);


4.向下移动

     int y=root.ChildNodes.Count;
     for(int m=0;m     {
      if(m+1==Int32.Parse(id)) root.InsertAfter(XMLDom.GetElementsByTagName("item")[m], XMLDom.GetElementsByTagName("item")[m+1]); 
     }
     XMLDom.Save(filepath);

原创粉丝点击