小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C#讀取XML DOM方式讀取

 ThinkTank_引擎 2014-01-17

第一種方法DOM方式讀取

DOM其實(shí)就是節(jié)點(diǎn)組成的層次結(jié)構(gòu).我們首先把xml文件讀取到內(nèi)存中以樹狀結(jié)構(gòu)存儲(chǔ),以后操作的時(shí)候只需要對(duì)內(nèi)存進(jìn)行操作就可以了.

在C#中System.Xml命名空間來幫助我們做這個(gè)工作.

首先看下類結(jié)構(gòu):

System.Object
----System.Xml.XmlNode
--------System.Xml.XmlAttribute
--------System.Xml.XmlLinkedNode

----------------System.Xml.XmlElement
--------System.Xml.XmlDocument
--------System.Xml.XmlDocumentFragment
--------System.Xml.XmlEntity
--------System.Xml.XmlNotation

XmlNode表示 XML 文檔中的單個(gè)節(jié)點(diǎn)為抽象類.詳細(xì)請(qǐng)看MSDN

下面用四中方法讀取XmlFile.xml文件:

第一種:一層層循環(huán)

第二種:遞歸

第三種:XPath

第四種:微軟提供的數(shù)據(jù)模型的實(shí)例導(dǎo)航(其實(shí)就是XPath方法)

 

XmlFile.xml文件:
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <myFamliy>
  3.     <person>
  4.         <name>爸爸</name>
  5.         <age>54</age>
  6.         <gender>男</gender>
  7.     </person>
  8.     <person>
  9.         <name>媽媽</name>
  10.         <age>53</age>
  11.         <gender>女</gender>
  12.     </person>
  13.     <person>
  14.         <name>哥哥</name>
  15.         <age>28</age>
  16.         <gender>男</gender>
  17.     </person>
  18.     <person>
  19.         <name>妹妹</name>
  20.         <age>24</age>
  21.         <gender>女</gender>
  22.     </person>
  23. </myFamliy>

C#代碼:

  1. using System;
  2. using System.Configuration;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.HtmlControls;
  9. using System.Web.UI.WebControls;
  10. using System.Web.UI.WebControls.WebParts;
  11. using System.Xml.Linq;
  12. using System.Xml;
  13. public partial class _Default : System.Web.UI.Page 
  14. {
  15.     protected void Page_Load(object sender, EventArgs e)
  16.     {
  17.         System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
  18.         doc.Load(@"XMLFile.xml");
  19.         XmlElement root=doc.DocumentElement;//跟元素
  20.         //RecursionNode(root);
  21.         //ForeachNode(root);
  22.         string strXPath = "/myFamliy/person/name/text()";
  23.         //XPathMethod(root, strXPath);
  24.         MicrosoftXPath(strXPath);
  25.     }
  26.     //循環(huán)
  27.     private void ForeachNode(XmlElement root)
  28.     {
  29.         System.Xml.XmlNodeList list = root.ChildNodes;  //跟元素下的子節(jié)點(diǎn)(列表)
  30.         foreach (XmlNode node1 in list)
  31.         {
  32.             Response.Write(string.Format(" 節(jié)點(diǎn)類型:{0} 節(jié)點(diǎn)名:{1} | 節(jié)點(diǎn)值:{2}", node1.NodeType, node1.Name, node1.Value) + "<br />");
  33.             XmlNodeList child = node1.ChildNodes;
  34.             foreach (XmlNode node2 in child)
  35.             {
  36.                 Response.Write(string.Format(" 節(jié)點(diǎn)類型:{0} 節(jié)點(diǎn)名:{1} | 節(jié)點(diǎn)值:{2}", node2.NodeType, node2.Name, node2.Value) + "<br />");
  37.                 XmlNodeList child2 = node2.ChildNodes;
  38.                 foreach (XmlNode node3 in child2)
  39.                 {
  40.                     Response.Write(string.Format(" 節(jié)點(diǎn)類型:{0} 節(jié)點(diǎn)名:{1} | 節(jié)點(diǎn)值:{2}", node3.NodeType, node3.Name, node3.Value) + "<br />");
  41.                 }
  42.             }
  43.         }
  44.     }
  45.     //遞歸
  46.     private void RecursionNode(XmlNode node)
  47.     {
  48.         Response.Write(string.Format(" 節(jié)點(diǎn)類型:{0} 節(jié)點(diǎn)名:{1} | 節(jié)點(diǎn)值:{2}", node.NodeType, node.Name, node.Value) + "<br />");
  49.         if (node.HasChildNodes)
  50.         {
  51.             foreach (XmlNode xn in node)
  52.             {
  53.                 RecursionNode(xn);
  54.             }
  55.         }
  56.     }
  57.     //xpath
  58.     private void XPathMethod(XmlNode node, string strPath)
  59.     {
  60.         //省略strPath驗(yàn)證
  61.         //SelectNodes方法返回node所以節(jié)點(diǎn)
  62.         XmlNodeList list= node.SelectNodes(strPath);
  63.         foreach (XmlNode xmlNode in list)
  64.         {
  65.             Response.Write(xmlNode.Value+"<br>");
  66.         }
  67.         //SelectSingleNode方法返回第一個(gè)節(jié)點(diǎn)
  68.         XmlNode firstCXmlNode=node.SelectSingleNode(strPath);
  69.         Response.Write("第一個(gè)節(jié)點(diǎn)值為:" + firstCXmlNode.Value);
  70.     }
  71.      //XPath數(shù)據(jù)模型的實(shí)例進(jìn)行導(dǎo)航和編輯。
  72.     private void MicrosoftXPath(string strPath)
  73.     {
  74.         System.Xml.XPath.XPathDocument document
  75.             =new System.Xml.XPath.XPathDocument (@"XMLFile.xml");
  76.         //取得導(dǎo)航器
  77.         System.Xml.XPath.XPathNavigator nav = document.CreateNavigator();
  78.         //Select()方法:選擇nav中的所有節(jié)點(diǎn),查詢的結(jié)果返回一個(gè)迭代器 XPathNodeIterator
  79.         System.Xml.XPath.XPathNodeIterator iterator=nav.Select(strPath);
  80.         foreach (System.Xml.XPath.XPathNavigator n in iterator)
  81.         {
  82.             Response.Write(n.Value+"<br>");
  83.         }
  84.         //SelectSingleNode()方法:選擇 nav 中的單個(gè)節(jié)點(diǎn),返回XPathNavigator類型
  85.         System.Xml.XPath.XPathNavigator firstNav = nav.SelectSingleNode(strPath);
  86.         Response.Write("第一個(gè)節(jié)點(diǎn)值為:"+firstNav.Value);
  87.     }
  88. }

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多