日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)編程開發(fā)C#.NET → C#中如何創(chuàng)建xml文件 增、刪、改、查 xml節(jié)點(diǎn)信息

      C#中如何創(chuàng)建xml文件 增、刪、改、查 xml節(jié)點(diǎn)信息

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站整理時(shí)間:2011/1/26 21:12:07字體大。A-A+

      作者:佚名點(diǎn)擊:2565次評(píng)論:1次標(biāo)簽: xml

      • 類型:下載工具大小:828KB語(yǔ)言:中文 評(píng)分:7.5
      • 標(biāo)簽:
      立即下載
      XML:Extensible Markup Language(可擴(kuò)展標(biāo)記語(yǔ)言)的縮寫,是用來(lái)定義其它語(yǔ)言的一種元語(yǔ)言,其前身是SGML(Standard Generalized
      Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)。它沒有標(biāo)簽集(tag set),也沒有語(yǔ)法規(guī)則(grammatical rule),但是它有句法規(guī)則(syntax rule)。
      任何XML文檔對(duì)任何類型的應(yīng)用以及正確的解析都必須是良構(gòu)的(well-formed),即每一個(gè)打開的標(biāo)簽都必須有匹配的結(jié)束標(biāo)簽,不得
      含有次序顛倒的標(biāo)簽,并且在語(yǔ)句構(gòu)成上應(yīng)符合技術(shù)規(guī)范的要求。XML文檔可以是有效的(valid),但并非一定要求有效。所謂有效文檔是指其符合其文檔
      類型定義(DTD)的文檔。如果一個(gè)文檔符合一個(gè)模式(schema)的規(guī)定,那么這個(gè)文檔是"模式有效的(schema valid)"! 
      XML文件在存儲(chǔ)、交換和傳輸數(shù)據(jù)信息上有著很方便處理,那么今天這篇文章主要講一下用C#如何實(shí)現(xiàn)對(duì)XML文件的基本操作,
      如:創(chuàng)建xml文件,增、刪、改、查xml的節(jié)點(diǎn)信息。所使用的方法很基礎(chǔ),方便易懂(用于自己的學(xué)習(xí)和記憶只需,同時(shí)也希望能夠給你帶來(lái)一些幫助,
      如有不合適的地方歡迎大家批評(píng)指正)。
        本文的主要模塊為:    
      ① :生成xml文件    
      ② :遍歷xml文件的節(jié)點(diǎn)信息    
      ③ :修改xml文件的節(jié)點(diǎn)信息    
      ④ :向xml文件添加節(jié)點(diǎn)信息    
      ⑤ :刪除指定xml文件的節(jié)點(diǎn)信息假設(shè)我們需要設(shè)計(jì)出這樣的一個(gè)xml文件來(lái)存儲(chǔ)相應(yīng)的信息,如下所示:
      <Computers>
      <Computer ID="11111111" Description="Made in China">
      <name>Lenovo</name>
      <price>5000</price>
      </Computer>
      <Computer ID="2222222" Description="Made in USA">
      <name>IBM</name>
      <price>10000</price>
      </Computer>
      </Computers>

        那么如何生成這個(gè)xml文件?又怎么讀取這個(gè)xml文件的節(jié)點(diǎn)信息,以及如何對(duì)這個(gè)xml文件的節(jié)點(diǎn)信息作相應(yīng)的操作?請(qǐng)看如下代碼示例:
        【注:因?yàn)槲覀円褂脁ml相關(guān)的語(yǔ)法和方法,所以一定要引入命名空間 System.Xml】
      1using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 using System.Xml;
      6
      7 namespace OperateXML
      8{
      9class Program
      10 {
      11staticvoid Main(string[] args)
      12 {
      13try
      14 {
      15//xml文件存儲(chǔ)路徑
      16string myXMLFilePath ="E:\\MyComputers.xml";
      17//生成xml文件
      18 GenerateXMLFile(myXMLFilePath);
      19//遍歷xml文件的信息
      20 GetXMLInformation(myXMLFilePath);
      21//修改xml文件的信息
      22 ModifyXmlInformation(myXMLFilePath);
      23//向xml文件添加節(jié)點(diǎn)信息
      24 AddXmlInformation(myXMLFilePath);
      25//刪除指定節(jié)點(diǎn)信息
      26 DeleteXmlInformation(myXMLFilePath);
      27 }
      28catch (Exception ex)
      29 {
      30 Console.WriteLine(ex.ToString());
      31 }
      32 }
      33
      34privatestaticvoid GenerateXMLFile(string xmlFilePath)
      35 {
      36try
      37 {
      38//初始化一個(gè)xml實(shí)例
      39 XmlDocument myXmlDoc =new XmlDocument();
      40//創(chuàng)建xml的根節(jié)點(diǎn)
      41 XmlElement rootElement = myXmlDoc.CreateElement("Computers");
      42//將根節(jié)點(diǎn)加入到xml文件中(AppendChild)
      43 myXmlDoc.AppendChild(rootElement);
      44
      45//初始化第一層的第一個(gè)子節(jié)點(diǎn)
      46 XmlElement firstLevelElement1 = myXmlDoc.CreateElement("Computer");
      47//填充第一層的第一個(gè)子節(jié)點(diǎn)的屬性值(SetAttribute)
      48 firstLevelElement1.SetAttribute("ID", "11111111");
      49 firstLevelElement1.SetAttribute("Description", "Made in China");
      50//將第一層的第一個(gè)子節(jié)點(diǎn)加入到根節(jié)點(diǎn)下
      51 rootElement.AppendChild(firstLevelElement1);
      52//初始化第二層的第一個(gè)子節(jié)點(diǎn)
      53 XmlElement secondLevelElement11 = myXmlDoc.CreateElement("name");
      54//填充第二層的第一個(gè)子節(jié)點(diǎn)的值(InnerText)
      55 secondLevelElement11.InnerText ="Lenovo";
      56 firstLevelElement1.AppendChild(secondLevelElement11);
      57 XmlElement secondLevelElement12 = myXmlDoc.CreateElement("price");
      58 secondLevelElement12.InnerText ="5000";
      59 firstLevelElement1.AppendChild(secondLevelElement12);
      60
      61
      62 XmlElement firstLevelElement2 = myXmlDoc.CreateElement("Computer");
      63 firstLevelElement2.SetAttribute("ID", "2222222");
      64 firstLevelElement2.SetAttribute("Description", "Made in USA");
      65 rootElement.AppendChild(firstLevelElement2);
      66 XmlElement secondLevelElement21 = myXmlDoc.CreateElement("name");
      67 secondLevelElement21.InnerText ="IBM";
      68 firstLevelElement2.AppendChild(secondLevelElement21);
      69 XmlElement secondLevelElement22 = myXmlDoc.CreateElement("price");
      70 secondLevelElement22.InnerText ="10000";
      71 firstLevelElement2.AppendChild(secondLevelElement22);
      72
      73//將xml文件保存到指定的路徑下
      74 myXmlDoc.Save(xmlFilePath);
      75 }
      76catch (Exception ex)
      77 {
      78 Console.WriteLine(ex.ToString());
      79 }
      80 }
      81
      82privatestaticvoid GetXMLInformation(string xmlFilePath)
      83 {
      84try
      85 {
      86//初始化一個(gè)xml實(shí)例
      87 XmlDocument myXmlDoc =new XmlDocument();
      88//加載xml文件(參數(shù)為xml文件的路徑)
      89 myXmlDoc.Load(xmlFilePath);
      90//獲得第一個(gè)姓名匹配的節(jié)點(diǎn)(SelectSingleNode):此xml文件的根節(jié)點(diǎn)
      91 XmlNode rootNode = myXmlDoc.SelectSingleNode("Computers");
      92//分別獲得該節(jié)點(diǎn)的InnerXml和OuterXml信息
      93string innerXmlInfo = rootNode.InnerXml.ToString();
      94string outerXmlInfo = rootNode.OuterXml.ToString();
      95//獲得該節(jié)點(diǎn)的子節(jié)點(diǎn)(即:該節(jié)點(diǎn)的第一層子節(jié)點(diǎn))
      96 XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
      97foreach (XmlNode node in firstLevelNodeList)
      98 {
      99//獲得該節(jié)點(diǎn)的屬性集合
      100 XmlAttributeCollection attributeCol = node.Attributes;
      101foreach (XmlAttribute attri in attributeCol)
      102 {
      103//獲取屬性名稱與屬性值
      104string name = attri.Name;
      105string value = attri.Value;
      106 Console.WriteLine("{0} = {1}", name, value);
      107 }
      108
      109//判斷此節(jié)點(diǎn)是否還有子節(jié)點(diǎn)
      110if (node.HasChildNodes)
      111 {
      112//獲取該節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)
      113 XmlNode secondLevelNode1 = node.FirstChild;
      114//獲取該節(jié)點(diǎn)的名字
      115string name = secondLevelNode1.Name;
      116//獲取該節(jié)點(diǎn)的值(即:InnerText)
      117string innerText = secondLevelNode1.InnerText;
      118 Console.WriteLine("{0} = {1}", name, innerText);
      119
      120//獲取該節(jié)點(diǎn)的第二個(gè)子節(jié)點(diǎn)(用數(shù)組下標(biāo)獲取)
      121 XmlNode secondLevelNode2 = node.ChildNodes[1];
      122 name = secondLevelNode2.Name;
      123 innerText = secondLevelNode2.InnerText;
      124 Console.WriteLine("{0} = {1}", name, innerText);
      125 }
      126 }
      127 }
      128catch (Exception ex)
      129 {
      130 Console.WriteLine(ex.ToString());
      131 }
      132 }
      133
      134privatestaticvoid ModifyXmlInformation(string xmlFilePath)
      135 {
      136try
      137 {
      138 XmlDocument myXmlDoc =new XmlDocument();
      139 myXmlDoc.Load(xmlFilePath);
      140 XmlNode rootNode = myXmlDoc.FirstChild;
      141 XmlNodeList firstLevelNodeList = rootNode.ChildNodes;
      142foreach (XmlNode node in firstLevelNodeList)
      143 {
      144//修改此節(jié)點(diǎn)的屬性值
      145if (node.Attributes["Description"].Value.Equals("Made in USA"))
      146 {
      147 node.Attributes["Description"].Value ="Made in HongKong";
      148 }
      149 }
      150//要想使對(duì)xml文件所做的修改生效,必須執(zhí)行以下Save方法
      151 myXmlDoc.Save(xmlFilePath);
      152 }
      153catch (Exception ex)
      154 {
      155 Console.WriteLine(ex.ToString());
      156 }
      157
      158 }
      159
      160privatestaticvoid AddXmlInformation(string xmlFilePath)
      161 {
      162try
      163 {
      164 XmlDocument myXmlDoc =new XmlDocument();
      165 myXmlDoc.Load(xmlFilePath);
      166//添加一個(gè)帶有屬性的節(jié)點(diǎn)信息
      167foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes)
      168 {
      169 XmlElement newElement = myXmlDoc.CreateElement("color");
      170 newElement.InnerText ="black";
      171 newElement.SetAttribute("IsMixed", "Yes");
      172 node.AppendChild(newElement);
      173 }
      174//保存更改
      175 myXmlDoc.Save(xmlFilePath);
      176 }
      177catch (Exception ex)
      178 {
      179 Console.WriteLine(ex.ToString());
      180 }
      181 }
      182
      183privatestaticvoid DeleteXmlInformation(string xmlFilePath)
      184 {
      185try
      186 {
      187 XmlDocument myXmlDoc =new XmlDocument();
      188 myXmlDoc.Load(xmlFilePath);
      189foreach (XmlNode node in myXmlDoc.FirstChild.ChildNodes)
      190 {
      191//記錄該節(jié)點(diǎn)下的最后一個(gè)子節(jié)點(diǎn)(簡(jiǎn)稱:最后子節(jié)點(diǎn))
      192 XmlNode lastNode = node.LastChild;
      193//刪除最后子節(jié)點(diǎn)下的左右子節(jié)點(diǎn)
      194 lastNode.RemoveAll();
      195//刪除最后子節(jié)點(diǎn)
      196 node.RemoveChild(lastNode);
      197 }
      198//保存對(duì)xml文件所做的修改
      199 myXmlDoc.Save(xmlFilePath);
      200 }
      201catch (Exception ex)
      202 {
      203 Console.WriteLine(ex.ToString());
      204 }
      205 }
      206 }
      207}
      208上面的這個(gè)例子,首先是通過GenerateXMLFile方法在E盤創(chuàng)建出了我們預(yù)想的xml文件;然后通過GetXMLInformation方法對(duì)剛剛生成的xml文件進(jìn)行了信息的讀取;
      之后通過ModifyXmlInformation方法對(duì)xml文件信息作出相應(yīng)的修改(<Computer ID="2222222" Description="Made in USA">
      修改成為<Computer ID="2222222" Description="Made in HongKong">);再之后通過AddXmlInformation方法向xml文件中添加了一個(gè)帶有屬性值的color節(jié)點(diǎn);
      最后通過DeleteXmlInformation方法將剛剛添加上的color節(jié)點(diǎn)刪除掉。至此完成了對(duì)xml文件的基本操作:創(chuàng)建、讀取、修改、添加、刪除。
      【注1:想要將對(duì)xml文件所做的任何修改生效的話,必須調(diào)用Save方法,否則我們所做的修改不會(huì)保存】
      【注2:我們?cè)趧?chuàng)建節(jié)點(diǎn)的時(shí)候用的是XmlElement,但是讀取節(jié)點(diǎn)信息的時(shí)候卻用的是XmlNode,這里強(qiáng)調(diào)一點(diǎn):XmlElement是XmlNode的繼承,可以調(diào)用更多的方法
          實(shí)現(xiàn)相應(yīng)所需的功能】
        
        最后簡(jiǎn)單集中的總結(jié)一下對(duì)xml進(jìn)行操作的基本方法,如下所示:
          //所需要添加的命名空間
          using System.Xml;
          //初始化一個(gè)xml實(shí)例
          XmlDocument xml=new XmlDocument();

          //導(dǎo)入指定xml文件
          xml.Load(“xml文件路徑path”);

          //指定一個(gè)節(jié)點(diǎn)
          XmlNode root=xml.SelectSingleNode("節(jié)點(diǎn)名稱");

          //獲取節(jié)點(diǎn)下所有直接子節(jié)點(diǎn)
          XmlNodeList childlist=root.ChildNodes;

          //判斷該節(jié)點(diǎn)下是否有子節(jié)點(diǎn)
          root.HasChildNodes;

          //獲取同名同級(jí)節(jié)點(diǎn)集合
          XmlNodeList nodelist=xml.SelectNodes("節(jié)點(diǎn)名稱");

          //生成一個(gè)新節(jié)點(diǎn)
          XmlElement node=xml.CreateElement("節(jié)點(diǎn)名稱");

          //將節(jié)點(diǎn)加到指定節(jié)點(diǎn)下,作為其子節(jié)點(diǎn)
          root.AppendChild(node);

          //將節(jié)點(diǎn)加到指定節(jié)點(diǎn)下某個(gè)子節(jié)點(diǎn)前
          root.InsertBefore(node,root.ChildeNodes[i]);

          //為指定節(jié)點(diǎn)的新建屬性并賦值
          node.SetAttribute("id","11111");

          //為指定節(jié)點(diǎn)添加子節(jié)點(diǎn)
          root.AppendChild(node);

          //獲取指定節(jié)點(diǎn)的指定屬性值
          string id=node.Attributes["id"].Value;

          //獲取指定節(jié)點(diǎn)中的文本
          string content=node.InnerText;

          //保存XML文件
          xml.Save(“xml文件存儲(chǔ)的路徑path”);

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門評(píng)論

        最新評(píng)論

        第 2 樓 山西太原金玉網(wǎng)吧(山西大學(xué)商務(wù)學(xué)院) 網(wǎng)友 客人 發(fā)表于: 2014/10/2 9:31:06
        good good good good good good good good good good good

        支持( 0 ) 蓋樓(回復(fù))

        第 1 樓 黑龍江哈爾濱黑龍江中醫(yī)藥大學(xué) 網(wǎng)友 客人 發(fā)表于: 2011/7/29 16:22:59

        支持( 0 ) 蓋樓(回復(fù))

        發(fā)表評(píng)論 查看所有評(píng)論(1)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)