日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
淺析C#操作XML處理指令(PI)

這里我們將介紹如何用C#操作XML處理指令(PI),XML文檔的應(yīng)用十分廣泛,使用C#操作XML處理指令,能起到事半功倍的效果。

北海網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

什么是處理指令?

處理指令(Processing Instructions,PI)是用“ ”包圍的一種標(biāo)簽,用以描述特定應(yīng)用程序信息。XML文檔可以包含多個(gè)針對(duì)不同應(yīng)用程序的處理指令。處理指令由兩部分組成,target和value。target的角色類似于“名稱”,緊隨target之后的字符串就是value,value可以包含多個(gè)標(biāo)記。
那么Xml聲明是不是處理指令呢?答案是肯定的,XML聲明是一個(gè)特殊的處理指令,它之所以特殊是因?yàn)樗膙alue格式是預(yù)先定義好的。另外一個(gè)常見的處理指令示例是外部樣式表。樣式表處理指令也擁有預(yù)先定義好格式的value值,它由一些偽屬性組成。為什么叫做“偽屬性”,這是因?yàn)樗膙alue值看上去像是幾個(gè)正常的XML屬性,但事實(shí)上它們只是一個(gè)字符串而已。

然而處理指令value值的格式是開放的。處理指令并不是文檔數(shù)據(jù)的一部分,XML解析器并不會(huì)理會(huì)它的內(nèi)容,而是直接將它傳遞給客戶端應(yīng)用程序。

微軟Office套件中的InfoPath就是用了處理指令來指示Xml文件是否可以用InfoPath客戶端來查看。

而另一個(gè)處理指令,mso-infoPathSolution,則告訴InfoPath解決方案模板的位置。該模板包含了布局Xml文件的布局轉(zhuǎn)換信息、視圖的架構(gòu)信息已經(jīng)數(shù)據(jù)源信息。

那么在C#應(yīng)用程序中該如何操作包含處理指令的Xml文檔呢?

我們?cè)撊绾翁幚砗妥x取XML文檔中已有的處理指令?首先,處理指令可以像文檔中的其他節(jié)點(diǎn)一樣被選出。XPath使用了謂詞(predicate )processing-instruction()來測(cè)試該節(jié)點(diǎn)是不是一個(gè)處理指令。

在System.XML命名空間中,有一個(gè)XmlProcessingInstruction類。當(dāng)你從Xml文檔中選出了一個(gè)節(jié)點(diǎn)后,就可以把返回的XMLNode對(duì)象轉(zhuǎn)換成這種類型,該類型提供了非常友好的接口來操作處理指令的value。想要讀取它的value,只需要訪問該對(duì)象的Value屬性即可。

想要改變處理指令的值,也只需要將新值賦給該對(duì)象的Value屬性。

想要在XML文檔中添加一個(gè)新的處理指令,可以使用XMLDocument類的CreateProcessingInstruction方法。然后再使用InsertBefore或InsertAfter方法來將這個(gè)XmlProcessingInstruction對(duì)象添加到XML文檔中。

想要從XML文檔中刪除已有的處理指令,首先選出該處理指令的XmlNode對(duì)象,但不需要將其轉(zhuǎn)換為XMLProcessingInstruction對(duì)象。然后使用XMLDocument類的RemoveChild方法就可以將其刪除。

下面的代碼包含了本文所提及的C#操作全部?jī)?nèi)容:

 
 
 
  1. // Xml文件路徑   
  2. string strPath = “path”   
  3.  
  4. // 加載Xml文檔內(nèi)容   
  5. XmlDocument doc = new XmlDocument();   
  6. doc.XmlResolver = null;   
  7. doc.Load(strPath);   
  8.  
  9. // 顯示Xml文檔內(nèi)容   
  10. Console.WriteLine(doc.InnerXml.ToString().Replace("><", ">\r\n\n<"));   
  11. // 讀取Xml文檔的處理指令   
  12. XmlProcessingInstruction pi = (XmlProcessingInstruction)doc.SelectSingleNode("/processing-instruction(\"mso-infoPathSolution\")");   
  13. // 顯示處理指令的value   
  14. Console.WriteLine(pi.Value);   
  15.  
  16. // 更新處理指令的value   
  17. pi.Value = "updated value";   
  18.  
  19. // 顯示更新后的處理指令value   
  20. Console.WriteLine(pi.Value);   
  21.  
  22. // 創(chuàng)建新的處理指令   
  23. XmlProcessingInstruction piNew = doc.CreateProcessingInstruction("new-pi", "my new processing instruction");   
  24.  
  25. // 將處理指令添加到文檔中   
  26. doc.InsertBefore(piNew, doc.ChildNodes[3]);   
  27.  
  28. // 刪除處理指令   
  29. XmlNode ndDel = doc.SelectSingleNode("/processing-instruction(\"mso-application\")");   
  30. doc.RemoveChild(ndDel);   
  31.  
  32. // 顯示更改后的Xml文檔   
  33. Console.WriteLine(doc.InnerXml.ToString().Replace("><", ">\r\n\n<")); 

當(dāng)前名稱:淺析C#操作XML處理指令(PI)
文章路徑:http://www.5511xx.com/article/dphogeg.html