(目的在于讓大家知道有這個東西的存在)
XPath:即XML Path語言(Xpath)表達式使用路徑表示法(像在URL中使用一樣)來為XML文檔的各部分尋址!
關于XPath如何使用了,我們來看看!當然這里面的代碼只是入門,更深層次的還待更進一步的了解和學習!
既然是操作XML的那我們首先就需要一個xml文件!


<?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方式來尋找對應的值!
首先是建一個應用程序了,看代碼


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 第三個*號代表names或students 第四個*代碼的就是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文檔的內容轉換為另一個格式或結構不同的文檔。例如可以用XSTL將XML轉換為網站上使用的HTML或轉換為只包含應用陳旭所需字段文檔。
首先我們用XSTL來做這樣一件事,就是將一個XML中的數據轉到HTML上面去
我們用的還是上面剛用到的XML吧!我們只加一個節點就是學校名字
<school version="2.0">
???????? <schName>school</schName>
???????? <class>
?我們來寫XSL后綴的文件
格式定義如下


<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了!現在XML和XSTL文件都寫好!怎么轉換了!我們用到


XslCompiledTransform trans = new XslCompiledTransform();trans.Load("books.xsl");trans.Transform("Test.xml", "out.html");
Out.html不一定要是存在或不存在的!恩? 運行OK看下效果圖
哈哈,OK!這就是XPath和XSLT了!當然關于XSLT的語法還有很多,同樣我們在MSDN中輸入XSL就會出現很多像xsl:if、xsl:copy啊等一些語法元素了!網上也有很多相關的元素幫助說明!
(ps:很早之前在空間寫的文章,因為要為后面的文章作鋪墊,所以提過來了)
?
?
?
?