XPth和XSLT的一些簡單用法

(目的在于讓大家知道有這個東西的存在)

XPath:XML Path語言(Xpath)表達式使用路徑表示法(像在URL中使用一樣)來為XML文檔的各部分尋址!

關于XPath如何使用了,我們來看看!當然這里面的代碼只是入門,更深層次的還待更進一步的了解和學習!

既然是操作XML的那我們首先就需要一個xml文件!

Student
<?xml version="1.0" encoding="gbk"?><school version="2.0"><class><names>計1</names><student types='1'><name>aa</name><sex>x</sex><age>21</age></student><student types='2'><name>bb</name><sex>y</sex><age>22</age></student><student types='3'><name>cc</name><sex>z</sex><age>23</age></student></class><class><names>計2</names><student types='4'><name>aaa</name><sex>x</sex><age>21</age></student><student types='5'><name>bbb</name><sex>y</sex><age>22</age></student><student types='6'><name>ccc</name><sex>z</sex><age>23</age></student></class></school>

很簡單的一個XML下面我們就多這個XML進行操作!通過XPATH方式來尋找對應的值!

首先是建一個應用程序了,看代碼

View Code
string filePath="Test.xml";//創建xml讀取對象(文檔對象)?
XmlDocument xmlDoc=new XmlDocument();StreamReader sr = new StreamReader(filePath);//加載XML文件
xmlDoc.Load(sr);string path = "*/*/*/*";      //尋址格式表達式?
XmlNodeList list = xmlDoc.SelectSingleNode(path).ChildNodes;foreach (XmlNode node in list){MessageBox.Show(node.InnerText);}sr.Close();

?這比較簡單!運行的結果就是第一個*號代表school,第二個*號代表class 第三個*號代表namesstudents 第四個*代碼的就是name默認第一個!所以輸出的值是aa!那么我們想輸出屬于計2班的第一個人的姓名怎么辦?

string path = "*/*/*[@types='4']/*";

我們的表達式就要這樣寫了!我們要找到最后一個了

string path = "*/*[last()]/*[last()]/*";

?還可以具體指定,比如我要知道第二個班級的第二個學生的姓名

string path = "school/class[2]/student[2]/*[1]";??? 等同于

string path = "*/*[2]/*[3]/*[1]";

大家可能疑惑,*代碼表的是下面所有的節點的第幾個節點!而上面的是指定了是student節點的第二個節點了!

道理到時相通的!知道了簡單的語法了!其他的就好說了!

???????? 其他的語法了我們就要問我們的MSDN了,我們在MSDN中搜索XPath就可以得到相關的語法知識了!所以XPath并沒有想象中的那么難!還等什么大家動手試下吧!下面我們來看下XStl吧!也不是很難!

XSLT:可擴展標記語言轉換(XSTL)可以將源XML文檔的內容轉換為另一個格式或結構不同的文檔。例如可以用XSTLXML轉換為網站上使用的HTML或轉換為只包含應用陳旭所需字段文檔。

首先我們用XSTL來做這樣一件事,就是將一個XML中的數據轉到HTML上面去

我們用的還是上面剛用到的XML吧!我們只加一個節點就是學校名字

<school version="2.0">

???????? <schName>school</schName>

???????? <class>

?我們來寫XSL后綴的文件

格式定義如下

XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="/"><HTML><head><title>name:<xsl:value-of select="school/schName"/></title></head><body><table border='1'><xsl:apply-templates/></table>          </body>  </HTML></xsl:template><xsl:template match="school"><xsl:apply-templates select="class"/></xsl:template><xsl:template match="class"><tr><td colspan='3'>class:<xsl:value-of select="names"/></td></tr><xsl:for-each select="student"><tr><td>name:<xsl:value-of select="name"/></td><td>sex:<xsl:value-of select="sex"/></td><td>age:<xsl:value-of select="age"/></td></tr></xsl:for-each></xsl:template></xsl:stylesheet>

最開始就是一個頭文件了!然后在就是一個模板定義了!/代表的是當前的要轉換的XML

然后緊跟著的就是HTML代碼了!在接著就是title了!<xsl:value-of select="school/schName"/>這句話就是查詢了值并顯示了!怎么查詢,就是按XPath的語法查詢了!查詢當前XML文本下school/schName的值了!

???????? 然后在就是表格里面的值了一樣的,因為我們知道XPth所以事情就好辦多了!然后同樣的是找到班級的值了!一個班級可能有很多人,我們要通過循環來找出班級里面的學生了!

語言都是神奇的,XSTL中也有循環嘿嘿!<xsl:for-each select="student">select指的是要循環的節點了!恩OK了!現在XMLXSTL文件都寫好!怎么轉換了!我們用到

View Code
XslCompiledTransform trans = new XslCompiledTransform();trans.Load("books.xsl");trans.Transform("Test.xml", "out.html");

Out.html不一定要是存在或不存在的!恩? 運行OK看下效果圖

哈哈,OK!這就是XPathXSLT了!當然關于XSLT的語法還有很多,同樣我們在MSDN中輸入XSL就會出現很多像xsl:ifxsl:copy啊等一些語法元素了!網上也有很多相關的元素幫助說明!

(ps:很早之前在空間寫的文章,因為要為后面的文章作鋪墊,所以提過來了)

?

?

?

?

轉載于:https://www.cnblogs.com/RegicideGod/archive/2012/08/07/2627436.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/377273.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377273.shtml
英文地址,請注明出處:http://en.pswp.cn/news/377273.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

isc dhcp_ISC的完整形式是什么?

isc dhcpISC&#xff1a;印度學校證書 (ISC: Indian School Certificate) ISC is an abbreviation of the Indian School Certificate. It alludes to the 12th class examination or higher secondary examination conducted by the Council for the Indian School Certificat…

《MySQL——連接查詢》

內連接&#xff1a; inner join 或者 join 外連接 1、左連接 left join 或 left outer join 2、右連接 right join 或 right outer join 3、完全外連接 full join 或 full outer join 圖示理解 全連接 創建person表和card表 CREATE DATABASE testJoin;CREATE TABLE person (…

win7下 apache2.2 +php5.4 環境搭建

這篇文章很好 沒法復制 把鏈接粘貼來http://www.360doc.com/content/13/0506/13/11495619_283349585.shtml# 現在能復制了&#xff1a; 把任何一篇你要復制、卻不讓復制的文章收藏入收藏夾(直接CtrlD,確定) 2在收藏夾中&#xff0c;右擊剛才收藏的那個網址&#xff0c;點屬性 3…

HDU_1533 Going Home(最優匹配) 解題報告

轉載請注明出自cxb:http://blog.csdn.net/cxb569262726 題目鏈接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1533 說實話&#xff0c;這個題目剛開始還真看不出是完備匹配下的最大權匹配&#xff08;當然&#xff0c;這個也可以用網絡流做。&#xff08;應該是添加…

c#中 uint_C#中的uint關鍵字

c#中 uintC&#xff03;uint關鍵字 (C# uint keyword) In C#, uint is a keyword which is used to declare a variable that can store an integral type of value (unsigned integer) the range of 0 to 4,294,967,295. uint keyword is an alias of System.UInt32. 在C&…

《MySQL——事務》

目錄事務的必要性MySQL中如何控制事務手動開啟事務事務的四大特征事務的四大特征事務開啟方式事務手動提交與手動回滾事務的隔離性臟讀現象不可重復讀現象幻讀現象串行化一些補充使用長事務的弊病commit work and chain的語法是做什么用的?怎么查詢各個表中的長事務&#xff1…

運行在TQ2440開發板上以及X86平臺上的linux內核編譯

一、運行在TQ2440開發板上的linux內核編譯 1、獲取源碼并解壓 直接使用天嵌移植好的“linux-2.6.30.4_20100531.tar.bz2”源碼包。 解壓&#xff08;天嵌默認解壓到/opt/EmbedSky/linux-2.6.30.4/中&#xff09; tar xvjf linux-2.6.30.4_20100531.tar.bz2 -C / 2、獲取默認配置…

ArcCatalog ArcMap打不開

原來是因為&#xff1a; 連接了電信的無線網卡 關掉即可 啟動ArcCatalog之后再開啟無線網卡 沒問題&#xff01;轉載于:https://www.cnblogs.com/ccjcjc/archive/2012/08/21/2649867.html

Python熊貓– GroupBy

Python熊貓– GroupBy (Python Pandas – GroupBy) GroupBy method can be used to work on group rows of data together and call aggregate functions. It allows to group together rows based off of a column and perform an aggregate function on them. GroupBy方法可用…

MySQL索引底層原理理解以及常見問題總結

目錄二叉查找樹為索引紅黑樹為索引B樹作為索引B樹作為索引MyISAM存儲引擎索引實現InnoDB存儲引擎索引實現常見問題聚集索引與非聚集索引InnoDB基于主鍵索引和普通索引的查詢有什么區別&#xff1f;InnoDB主鍵索引為何是整型的自增主鍵何時使用業務字段作為主鍵呢&#xff1f;哈…

Spring之HibernateTemplate 和HibernateDaoSupport

spring提供訪問數據庫的有三種方式&#xff1a; HibernateDaoSupport HibernateTemplate&#xff08;推薦使用&#xff09; jdbcTemplate(我們一般不用&#xff09; 類所在包&#xff1a; HibernateTemplate&#xff1a;org.springframework.orm.hibernate3.HibernateTemplate …

JDOJ-重建二叉樹

這是一道面試題&#xff0c;可以說是數據結構中的基礎題了&#xff0c;由先序遍歷以及中序遍歷生成一棵樹&#xff0c;然后輸出后序遍歷。 一個遞歸函數傳遞5個參數&#xff0c;頂點編號&#xff0c;先序左右區間&#xff0c;中序左右區間&#xff0c;每次進行區間長度判定&…

des算法密碼多長_密碼學中的多個DES

des算法密碼多長This is a DES that was susceptible to attacks due to tremendous advances in computer hardware in cryptography. Hence, it was a very complex or competent algorithm it would be feasible to reuse DES rather than writing an of cryptography. 由于…

《MySQL——索引筆記》

目錄回表覆蓋索引最左前綴原則聯合索引的時候&#xff0c;如何安排索引內的字段順序&#xff1f;索引下推重建索引問題聯合主鍵索引和 InnoDB 索引組織表問題in與between的區別回表 回到主鍵索引樹搜索的過程&#xff0c;我們稱為回表。 覆蓋索引 覆蓋索引就是在這次的查詢中…

計算凸多邊形面積的算法

1. 思路&#xff1a; 可以將凸多邊形&#xff08;邊數n > 3&#xff09;劃分為 (n - 2) 個三角形&#xff0c;分別運用向量叉積計算每個三角形的面積&#xff0c;最后累加各個三角形的面積就是多邊形的面積。 2. 求多邊形面積的算法模板&#xff1a;   定義點的結構體 str…

Windows CE開發常見問題解答

轉自&#xff1a; http://blog.csdn.net/slyzhang/article/details/6110490 1.怎樣在一個控件獲得焦點時打開軟鍵盤&#xff1f;比如一個EditBox獲得焦點后&#xff0c;這個時候自動打開軟鍵盤&#xff0c;這樣可以方便用戶輸入——SIPINFO、SHSIPINFO、SIPSETINFO、SIPGETINFO…

Julia中的supertype()函數

Julia| supertype()函數 (Julia | supertype() function) supertype() function is a library function in Julia programming language, it is used to get the concrete supertype of the given type (data type). supertype()函數是Julia編程語言中的庫函數&#xff0c;用于…

《操作系統知識點整理》

目錄進程與線程比較多線程同步與互斥生產者與消費者哲學家就餐問題讀者寫者問題進程間通信管道消息隊列共享內存信號量信號Socket鎖互斥鎖與自旋鎖讀寫鎖樂觀鎖與悲觀鎖死鎖進程與線程比較 進程是資源&#xff08;包括內存、打開的文件等&#xff09;分配的單位&#xff0c;線…

for,foreach,iterator的用法和區別

相同點&#xff1a; 三個都可以用來遍歷數組和集合不同點&#xff1a;1.形式差別 for的形式是 for&#xff08;int i0;i<arr.size();i&#xff09;{...} foreach的形式是 for&#xff08;int i&…

和菜鳥一起學linux總線驅動之初識spi驅動主要結構

既然知道了協議了&#xff0c;那么就可以開始去瞧瞧linux kenerl中的spi的驅動代碼了&#xff0c;代碼中有很多的結構體&#xff0c;還是對主要的結構體先做個了解吧&#xff0c;那樣才可以很好的理解驅動。主要是include/linux/spi.h 首先是SPI的主機和從機通信接口&#xff0…