<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Winform編程總結(jié)2—常用的XML讀寫

       

      1 using System;
      2  using System.Data;
      3 using System.Configuration;
      4 using System.Web;
      5 using System.Web.Security;
      6 using System.Web.UI;
      7 using System.Web.UI.WebControls;
      8 using System.Web.UI.WebControls.WebParts;
      9 using System.Web.UI.HtmlControls;
      10 using System.Collections;
      11
      12 //引用命名空間
      13 using System.Xml;
      14  
      16 namespace xmlOp
      17 {
      18 /// <summary>
      19 /// XmlOp類提供對XML數(shù)據(jù)庫的讀寫
      20 /// </summary>
      21 public class XmlOp
      22 {
      23 //聲明一個XmlDocument空對象
      24 protected XmlDocument XmlDoc = new XmlDocument();
      25
      26 /// <summary>
      27 /// 構(gòu)造函數(shù),導(dǎo)入Xml文件
      28 /// </summary>
      29 /// <param name="xmlFile">文件虛擬路徑</param>
      30 public XmlOp(string xmlFile)
      31 {
      32 try
      33 {
      34 XmlDoc.Load(GetXmlFilePath(xmlFile)); //載入Xml文檔
      35 }
      36 catch (System.Exception ex)
      37 {
      38 throw ex;
      39 }
      40 }
      41 /// <summary>
      42 /// 析構(gòu)函數(shù)
      43 /// </summary>
      44 ~XmlOp()
      45 {
      46 XmlDoc = null; //釋放XmlDocument對象
      47 }
      48
      49 /// <summary>
      50 /// 保存文件
      51 /// </summary>
      52 /// <param name="filePath">文件虛擬路徑</param>
      53 public void Save(string filePath)
      54 {
      55 try
      56 {
      57 XmlDoc.Save(GetXmlFilePath(filePath));
      58 }
      59 catch (System.Exception ex)
      60 {
      61 throw ex;
      62 }
      63 }
      64
      65 /// <summary>
      66 /// 返回Xml文件實際路徑
      67 /// </summary>
      68 /// <param name="xmlFile">文件虛擬路徑</param>
      69 /// <returns></returns>
      70 public string GetXmlFilePath(string xmlFile)
      71 {
      72 return HttpContext.Current.Server.MapPath(xmlFile);
      73 }
      74
      75 /// <summary>
      76 /// 根據(jù)Xml文件的節(jié)點路徑,返回一個DataSet數(shù)據(jù)集
      77 /// </summary>
      78 /// <param name="XmlPathNode">Xml文件的某個節(jié)點</param>
      79 /// <returns></returns>
      80 public DataSet GetDs(string XmlPathNode)
      81 {
      82 DataSet ds = new DataSet();
      83 try
      84 {
      85 System.IO.StringReader read = new System.IO.StringReader(XmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
      86 ds.ReadXml(read); //利用DataSet的ReadXml方法讀取StringReader文件流
      87 read.Close();
      88 }
      89 catch
      90 { }
      91 return ds;
      92 }
      93
      94 /// <summary>
      95 /// 屬性查詢,返回屬性值
      96 /// </summary>
      97 /// <param name="XmlPathNode">屬性所在的節(jié)點</param>
      98 /// <param name="Attrib">屬性</param>
      99 /// <returns></returns>
      100 public string SelectAttrib(string XmlPathNode, string Attrib)
      101 {
      102 string _strNode="";
      103 try
      104 {
      105 _strNode = XmlDoc.SelectSingleNode(XmlPathNode).Attributes[Attrib].Value;
      106 }
      107 catch
      108 { }
      109 return _strNode;
      110 }
      111
      112 /// <summary>
      113 /// 節(jié)點查詢,返回節(jié)點值
      114 /// </summary>
      115 /// <param name="XmlPathNode">節(jié)點的路徑</param>
      116 /// <returns></returns>
      117 public string SelectNodeText(string XmlPathNode)
      118 {
      119 string _nodeTxt = XmlDoc.SelectSingleNode(XmlPathNode).InnerText;
      120 if (_nodeTxt == null || _nodeTxt == "")
      121 return "";
      122 else
      123 return _nodeTxt;
      124 }
      125
      126 /// <summary>
      127 /// 節(jié)點值查詢判斷
      128 /// </summary>
      129 /// <param name="XmlPathNode">父節(jié)點</param>
      130 /// <param name="index">節(jié)點索引</param>
      131 /// <param name="NodeText">節(jié)點值</param>
      132 /// <returns></returns>
      133 public bool SelectNode(string XmlPathNode, int index, string NodeText)
      134 {
      135 try
      136 {
      137 XmlNodeList _NodeList = XmlDoc.SelectNodes(XmlPathNode);
      138 //循環(huán)遍歷節(jié)點,查詢是否存在該節(jié)點
      139 for (int i = 0; i < _NodeList.Count; i++)
      140 {
      141 if (_NodeList[i].ChildNodes[index].InnerText == NodeText)
      142 {
      143 return true;
      144 break;
      145 }
      146 }
      147 }
      148 catch
      149 {
      150 }
      151 return false;
      152 }
      153
      154 /// <summary>
      155 /// 獲取子節(jié)點個數(shù)
      156 /// </summary>
      157 /// <param name="XmlPathNode">父節(jié)點</param>
      158 /// <returns></returns>
      159 public int NodeCount(string XmlPathNode)
      160 {
      161 int i = 0;
      162 try
      163 {
      164 i=XmlDoc.SelectSingleNode(XmlPathNode).ChildNodes.Count;
      165 }
      166 catch
      167 {
      168 i=0;
      169 }
      170 return i;
      171 }
      172
      173 /// <summary>
      174 /// 更新一個節(jié)點的內(nèi)容
      175 /// </summary>
      176 /// <param name="XmlPathNode">節(jié)點的路徑</param>
      177 /// <param name="Content">新的節(jié)點值</param>
      178 /// <returns></returns>
      179 public bool UpdateNode(string XmlPathNode,string NodeContent)
      180 {
      181 try
      182 {
      183 XmlDoc.SelectSingleNode(XmlPathNode).InnerText = NodeContent;
      184 return true;
      185 }
      186 catch
      187 {
      188 return false;
      189 }
      190 }
      191
      192 /// <summary>
      193 /// 更新N個節(jié)點值
      194 /// </summary>
      195 /// <param name="XmlParentNode">父節(jié)點</param>
      196 /// <param name="XmlNode">子節(jié)點</param>
      197 /// <param name="NodeContent">子節(jié)點內(nèi)容</param>
      198 /// <returns></returns>
      199 public bool UpdateNode(string XmlParentNode, string[] XmlNode, string[] NodeContent)
      200 {
      201 try
      202 {
      203 //根據(jù)節(jié)點數(shù)組循環(huán)修改節(jié)點值
      204 for (int i = 0; i < XmlNode.Length; i++)
      205 {
      206 XmlDoc.SelectSingleNode(XmlParentNode+"/"+XmlNode[i]).InnerText = NodeContent[i];
      207 }
      208 return true;
      209 }
      210 catch
      211 {
      212 return false;
      213 }
      214 }
      215
      216 /// <summary>
      217 /// 修改屬性
      218 /// </summary>
      219 /// <param name="XmlPathNode">屬性所在的節(jié)點</param>
      220 /// <param name="Attrib">屬性名</param>
      221 /// <param name="Content">屬性值</param>
      222 /// <returns></returns>
      223 public bool UpdateAttrib(string XmlPathNode, string Attrib,string AttribContent)
      224 {
      225 try
      226 {
      227 //修改屬性值
      228 XmlDoc.SelectSingleNode(XmlPathNode).Attributes[Attrib].Value = AttribContent;
      229 return true;
      230 }
      231 catch
      232 {
      233 return false;
      234 }
      235 }
      236
      238 /// <summary>
      239 /// 添加屬性
      240 /// </summary>
      241 /// <param name="MainNode">屬性所在節(jié)點</param>
      242 /// <param name="Attrib">屬性名</param>
      243 /// <param name="AttribContent">屬性值</param>
      244 /// <returns></returns>
      245 public bool InsertAttrib(string MainNode,string Attrib, string AttribContent)
      246 {
      247 try
      248 {
      249 XmlElement objNode = (XmlElement)XmlDoc.SelectSingleNode(MainNode); //強制轉(zhuǎn)化成XmlElement對象
      250 objNode.SetAttribute(Attrib, AttribContent); //XmlElement對象添加屬性方法
      251 return true;
      252 }
      253 catch
      254 {
      255 return false;
      256 }
      257 }
      258
      260 /// <summary>
      261 /// 插入一個節(jié)點,帶N個子節(jié)點
      262 /// </summary>
      263 /// <param name="MainNode">插入節(jié)點的父節(jié)點</param>
      264 /// <param name="ChildNode">插入節(jié)點的元素名</param>
      265 /// <param name="Element">插入節(jié)點的子節(jié)點名數(shù)組</param>
      266 /// <param name="Content">插入節(jié)點的子節(jié)點內(nèi)容數(shù)組</param>
      267 /// <returns></returns>
      268 public bool InsertNode(string MainNode, string ChildNode, string[] Element, string[] Content)
      269 {
      270 try
      271 {
      272 XmlNode objRootNode = XmlDoc.SelectSingleNode(MainNode); //聲明XmlNode對象
      273 XmlElement objChildNode = XmlDoc.CreateElement(ChildNode); //創(chuàng)建XmlElement對象
      274 objRootNode.AppendChild(objChildNode);
      275 for (int i = 0; i < Element.Length; i++) //循環(huán)插入節(jié)點元素
      276 {
      277 XmlElement objElement = XmlDoc.CreateElement(Element[i]);
      278 objElement.InnerText = Content[i];
      279 objChildNode.AppendChild(objElement);
      280 }
      281 return true;
      282 }
      283 catch
      284 {
      285 return false;
      286 }
      287 }
      288
      289 /// <summary>
      290 /// 刪除一個節(jié)點
      291 /// </summary>
      292 /// <param name="Node">要刪除的節(jié)點</param>
      293 /// <returns></returns>
      294 public bool DeleteNode(string Node)
      295 {
      296 try
      297 {
      298 //XmlNode的RemoveChild方法來刪除節(jié)點及其所有子節(jié)點
      299 XmlDoc.SelectSingleNode(Node).ParentNode.RemoveChild(XmlDoc.SelectSingleNode(Node));
      300 return true;
      301 }
      302 catch
      303 {
      304 return false;
      305 }
      306 }
      307 }
      308 }
      309

      園子里面有類似的代碼http://www.rzrgm.cn/somesongs/archive/2009/01/22/xmlhelper.html,不過這個沒有給出具體方法體,所以沒法看到釋放資源的那塊,本來就是想看看怎么處理性能問題的。下面是一些具體例子。

      已知有一個XML文件(bookstore.xml)如下:
      <?xml version="1.0" encoding="gb2312"?>
      <bookstore>
        <book genre="fantasy" ISBN="2-3631-4">
          <title>Oberon's Legacy</title>
          <author>Corets, Eva</author>
          <price>5.95</price>
        </book>
      </bookstore>
       
      1、往<bookstore>節(jié)點中插入一個<book>節(jié)點:
         XmlDocument xmlDoc=new XmlDocument();
         xmlDoc.Load("bookstore.xml");
         XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找<bookstore>
         XmlElement xe1=xmlDoc.CreateElement("book");//創(chuàng)建一個<book>節(jié)點
         xe1.SetAttribute("genre","李贊紅");//設(shè)置該節(jié)點genre屬性
         xe1.SetAttribute("ISBN","2-3631-4");//設(shè)置該節(jié)點ISBN屬性
       
         XmlElement xesub1=xmlDoc.CreateElement("title");
         xesub1.InnerText="CS從入門到精通";//設(shè)置文本節(jié)點
         xe1.AppendChild(xesub1);//添加到<book>節(jié)點中
         XmlElement xesub2=xmlDoc.CreateElement("author");
         xesub2.InnerText="候捷";
         xe1.AppendChild(xesub2);
         XmlElement xesub3=xmlDoc.CreateElement("price");
         xesub3.InnerText="58.3";
         xe1.AppendChild(xesub3);
       
         root.AppendChild(xe1);//添加到<bookstore>節(jié)點中
         xmlDoc.Save("bookstore.xml");
      //===============================================
      結(jié)果為:
      <?xml version="1.0" encoding="gb2312"?>
      <bookstore>
        <book genre="fantasy" ISBN="2-3631-4">
          <title>Oberon's Legacy</title>
          <author>Corets, Eva</author>
          <price>5.95</price>
        </book>
        <book genre="李贊紅" ISBN="2-3631-4">
          <title>CS從入門到精通</title>
          <author>候捷</author>
          <price>58.3</price>
        </book>
      </bookstore>
       
      2、修改節(jié)點:將genre屬性值為“李贊紅“的節(jié)點的genre值改為“update李贊紅”,將該節(jié)點的子節(jié)點<author>的文本修改為“亞勝”。
          XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//獲取bookstore節(jié)點的所有子節(jié)點
         foreach(XmlNode xn in nodeList)//遍歷所有子節(jié)點
         {
          XmlElement xe=(XmlElement)xn;//將子節(jié)點類型轉(zhuǎn)換為XmlElement類型
          if(xe.GetAttribute("genre")=="李贊紅")//如果genre屬性值為“李贊紅”
          {
           xe.SetAttribute("genre","update李贊紅");//則修改該屬性為“update李贊紅”
       
           XmlNodeList nls=xe.ChildNodes;//繼續(xù)獲取xe子節(jié)點的所有子節(jié)點
           foreach(XmlNode xn1 in nls)//遍歷
           {
            XmlElement xe2=(XmlElement)xn1;//轉(zhuǎn)換類型
            if(xe2.Name=="author")//如果找到
            {
             xe2.InnerText="亞勝";//則修改
             break;//找到退出來就可以了
            }
           }
           break;
          }
         }
       
         xmlDoc.Save("bookstore.xml");//保存。
      //==================================================
      最后結(jié)果為:
      <?xml version="1.0" encoding="gb2312"?>
      <bookstore>
        <book genre="fantasy" ISBN="2-3631-4">
          <title>Oberon's Legacy</title>
          <author>Corets, Eva</author>
          <price>5.95</price>
        </book>
        <book genre="update李贊紅" ISBN="2-3631-4">
          <title>CS從入門到精通</title>
          <author>亞勝</author>
          <price>58.3</price>
        </book>
      </bookstore>
       
      3、刪除 <book genre="fantasy" ISBN="2-3631-4">節(jié)點的genre屬性,刪除 <book genre="update李贊紅" ISBN="2-3631-4">節(jié)點。
      XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;
       
         foreach(XmlNode xn in xnl)
         {
          XmlElement xe=(XmlElement)xn;
          if(xe.GetAttribute("genre")=="fantasy")
          {
           xe.RemoveAttribute("genre");//刪除genre屬性
          }
          else if(xe.GetAttribute("genre")=="update李贊紅")
          {
           xe.RemoveAll();//刪除該節(jié)點的全部內(nèi)容
          }
         }
         xmlDoc.Save("bookstore.xml");
      //===========================================
      最后結(jié)果為:
      <?xml version="1.0" encoding="gb2312"?>
      <bookstore>
        <book ISBN="2-3631-4">
          <title>Oberon's Legacy</title>
          <author>Corets, Eva</author>
          <price>5.95</price>
        </book>
        <book>
        </book>
      </bookstore>
       
      4、顯示所有數(shù)據(jù)。
         XmlNode xn=xmlDoc.SelectSingleNode("bookstore");
       
         XmlNodeList xnl=xn.ChildNodes;
         
         foreach(XmlNode xnf in xnl)
         {
          XmlElement xe=(XmlElement)xnf;
          Console.WriteLine(xe.GetAttribute("genre"));//顯示屬性值
          Console.WriteLine(xe.GetAttribute("ISBN"));
       
          XmlNodeList xnf1=xe.ChildNodes;
          foreach(XmlNode xn2 in xnf1)
          {
           Console.WriteLine(xn2.InnerText);//顯示子節(jié)點點文本
          }
         }
      posted @ 2010-12-16 23:19  nd  閱讀(4310)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 欧美大胆老熟妇乱子伦视频 | 在线看av一区二区三区| 白嫩少妇无套内谢视频| 无套内内射视频网站| 人人妻人人爽人人添夜夜欢视频| 国产熟女激情一区二区三区 | 国产农村妇女毛片精品久久| 国产不卡在线一区二区| 成年无码av片在线蜜芽| 无码人妻丰满熟妇片毛片| 国产精品麻豆成人av电影艾秋| 湟中县| 4hu亚洲人成人无码网www电影首页 | 亚洲一区二区三区蜜桃臀| 国产一区二区三区精品综合| 婷婷六月天在线| 欧美日韩精品一区二区视频 | 亚洲一区二区三区丝袜| 亚洲男女一区二区三区| 天堂亚洲免费视频| 国产无遮挡吃胸膜奶免费看| 最新亚洲人成网站在线影院| 亚洲 日本 欧洲 欧美 视频| 国产成人精品视频网站| 国产99re热这里只有精品| 亚洲中文字幕一区二区| 色综合天天综合网中文伊| 亚洲精中文字幕二区三区| a级亚洲片精品久久久久久久| 大屁股肥熟女流白浆| 国产在线98福利播放视频| 野外做受三级视频| 国产美女高潮流白浆视频| 久久av无码精品人妻出轨| jlzz大jlzz大全免费| 粉嫩国产av一区二区三区| 国产成人无码性教育视频| 日韩精品中文字幕一线不卡| 女高中生强奷系列在线播放 | 免费无码VA一区二区三区| 精品一区二区三区不卡|