成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C# XML解析方式實(shí)例解析

開(kāi)發(fā) 后端
C# XML解析的實(shí)現(xiàn)如何是通過(guò)XPath的方式是如何辦到的呢?具體的操作步驟是什么呢?那么本文就向你詳細(xì)介紹通過(guò)XPath的方式來(lái)實(shí)現(xiàn)C# XML解析以及需要注意的一些事宜。

C# XML解析通過(guò)XPath的方式是如何辦到的呢?具體的操作步驟是什么呢?那么下面我們就向你介紹通過(guò)XPath的方式來(lái)實(shí)現(xiàn)C# XML解析,希望對(duì)你了解C# XML解析有所幫助。

C# XML解析通過(guò)XPath的方式的步驟:

1、需要先加載文檔,然后再讀取想要的節(jié)點(diǎn)值。

◆xml文檔

protected XmlDocument doc = null;

◆xml文檔的根元素(節(jié)點(diǎn))

protected XmlElement root = null;

◆xml文檔的名空間管理器

protected XmlNamespaceManager nsmgr = null;

2、接下來(lái)就是加載文檔了

  1. protected void LoadXmlFile(FileInfo xmlFile)  
  2.   {  
  3. if (xmlFile == null || !xmlFile.Exists)  
  4. {  
  5.  throw new FileNotFoundException(  
  6. string.Format("要解析的文件不存在{0}。",  
  7. xmlFile.FullName));  
  8. }  
  9. //加載文件  
  10. this.doc = new XmlDocument();  
  11. doc.Load(xmlFile.FullName);  
  12. //準(zhǔn)備讀取文件  
  13. root = doc.DocumentElement;  
  14. string nameSpace = root.NamespaceURI;  
  15. nsmgr = new XmlNamespaceManager(doc.NameTable);  
  16. nsmgr.AddNamespace("ns", nameSpace);  
  17.   } 

◆C# XML解析通過(guò)XPath的方式要注意。

a、這兩行是取得xml文檔的名空間

  1. root = doc.DocumentElement;  
  2. string nameSpace = root.NamespaceURI; 

b、這兩行是建立xml文檔的名空間管理器

  1. nsmgr = new XmlNamespaceManager(doc.NameTable);  
  2. nsmgr.AddNamespace("ns", nameSpace); 

如果你的xml文檔有名空間,則這部分的代碼是必不可少的。

3、接下來(lái)就是讀取文檔節(jié)點(diǎn)的值了

這里兩個(gè)傳入?yún)?shù)prefixPath是節(jié)點(diǎn)的上級(jí)節(jié)點(diǎn)路徑,xRelativePath是要讀取的節(jié)點(diǎn)名稱。

另外,變量XmlFileInfo是要加載的xml文件。

  1. protected string GetNodeValue(  
  2. string prefixPath, string xRelativePath)  
  3.   {  
  4. if (doc == null)  
  5. {  
  6.  LoadXmlFile(XmlFileInfo);  
  7. }  
  8. string xPath = string.Empty;  
  9. if (!string.IsNullOrEmpty(xRelativePath))  
  10. {  
  11.  if (!string.IsNullOrEmpty(prefixPath))  
  12.  {  
  13.   xPath = prefixPath + xRelativePath;  
  14.  }  
  15.  else 
  16.  {  
  17.   xPath = xRelativePath;  
  18.  }  
  19. }  
  20. xPath = xPath.Replace("/""/ns:");  
  21. XmlNode node = root.SelectSingleNode(xPath, nsmgr);  
  22. if (node == null)  
  23. {  
  24.  return null;  
  25. }  
  26. return node.InnerXml;  
  27.   } 

可能有的朋友要問(wèn),為什么要設(shè)置兩個(gè)參數(shù)prefixPath和xRelativePath呢,其實(shí)這個(gè)沒(méi)有多大的關(guān)系,我只是為了自己覺(jué)得方便,你也可以在方法外確定了這個(gè)XPath,在方法中只設(shè)置一個(gè)傳入?yún)?shù),效果是一樣的。

◆注意這一行:

  1. xPath = xPath.Replace("/""/ns:"); 

如果你的xml文檔帶名空間,則這行是比不可少的,否則會(huì)出現(xiàn)找不到節(jié)點(diǎn),無(wú)法解析的情況。

關(guān)于XPath的一些問(wèn)題:

對(duì)于這樣一個(gè)xml文檔,要查找第一個(gè)節(jié)點(diǎn)下的學(xué)生的Name時(shí)(ID=01),其XPath應(yīng)該是"/ns:Root/ns:Students/ns:Student[1]/ns:Name"。xml對(duì)于重復(fù)的節(jié)點(diǎn)名稱,是按照順序1,2,3...的方式遍歷的,也就是說(shuō)如果要找第N個(gè)Student節(jié)點(diǎn)的下的節(jié)點(diǎn)之,那么應(yīng)使用Student[N]的標(biāo)識(shí)方式。

  1. ﹤?xml version="1.0" encoding="UTF-8" ?﹥  
  2. ﹤Root xmlns="urn:ClassNameSpace"﹥  
  3. ﹤Class﹥  
  4. ﹤ClassID﹥1234﹤/ClassID﹥  
  5. ﹤/Class﹥  
  6. ﹤Students﹥  
  7. ﹤Student﹥  
  8. ﹤ID﹥01﹤/ID﹥﹤Name﹥Name01﹤/Name﹥  
  9. ﹤/Student﹥  
  10. ﹤Student﹥  
  11. ﹤ID﹥02﹤/ID﹥﹤Name﹥Name02﹤/Name﹥  
  12. ﹤/Student﹥  
  13. ﹤/Students﹥  
  14. ﹤/Root﹥ 

當(dāng)然,這里也可以獲取節(jié)點(diǎn)屬性的值,查找滿足特定值的節(jié)點(diǎn)等等,這些和上面獲取節(jié)點(diǎn)值的過(guò)程是類似的。

C# XML解析通過(guò)XPath的方式的實(shí)現(xiàn)就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C# XML解析有所幫助。

【編輯推薦】

  1. 詳解C#中不同類的類型
  2. 淺談C#中標(biāo)準(zhǔn)Dispose模式的實(shí)現(xiàn)
  3. C#選擇正確的集合進(jìn)行編碼
  4. C# 4.0新特性:協(xié)變與逆變中的編程思想
  5. C#應(yīng)用Attribute特性 代碼統(tǒng)計(jì)分析
責(zé)任編輯:仲衡 來(lái)源: IT168
相關(guān)推薦

2009-09-09 13:57:28

C# XML解析

2009-08-18 10:47:40

C#枚舉類型

2009-09-07 06:31:32

C#窗體移動(dòng)

2009-08-26 12:14:44

C#打印設(shè)置

2009-08-19 16:09:15

C#操作Access

2009-08-31 18:17:32

C#接口編程

2009-09-09 14:04:18

C# XML解析XML解析方法

2009-08-31 17:16:12

C#實(shí)現(xiàn)接口

2009-08-28 12:31:06

C#靜態(tài)方法

2009-08-27 17:40:21

C#接口的作用

2009-08-31 17:30:10

C#接口的作用

2009-09-01 13:51:51

C#創(chuàng)建Word文檔

2009-09-03 09:16:35

C#遞歸函數(shù)

2009-09-03 15:43:21

C#時(shí)間計(jì)算

2009-09-04 13:37:44

C#貨幣格式

2009-09-14 14:25:53

C# Lambda EC# Lambda

2009-09-01 18:32:32

C#動(dòng)態(tài)數(shù)組

2009-08-28 15:37:22

C#線程類的定義

2009-09-01 13:59:01

C#操作Excel

2009-09-03 16:38:49

C#回車(chē)鍵事件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩精品一区二区三区久久 | 天天曰夜夜操 | 精品欧美一区二区在线观看 | 中文字幕一区在线观看视频 | 欧美成人一区二区三区 | 免费一二区 | 亚洲国产成人久久久 | 中文字幕亚洲欧美 | 操视频网站| 国产中文字幕网 | 欧美视频在线播放 | 欧美一级片| 国产日韩欧美一区二区 | 久久综合久色欧美综合狠狠 | 奇米久久 | 国产一区免费 | 欧美在线精品一区 | 精品一区电影 | 天天操妹子 | 91人人澡人人爽 | 久久在线 | 国产一级片一区二区三区 | 一区二区蜜桃 | 成人特级毛片 | 国产大学生情侣呻吟视频 | 亚洲视频区| 久久麻豆精品 | 日韩欧美中文字幕在线观看 | 久久国内精品 | 久久精品小短片 | 国产精品国产自产拍高清 | 久夜精品 | 亚洲视频一区二区三区 | 91精品久久 | 色婷婷久久久亚洲一区二区三区 | 国产精品1区2区3区 国产在线观看一区 | 男女羞羞视频在线免费观看 | 久久综合九色综合欧美狠狠 | 久久国| 欧美精品在线一区二区三区 | 精品国产91|