xml是一種標記語言,具有描述所有已知和未知數據的能力。XML擴展性比較好,可以為新的數據類型制定新的數據描述規則,作為對標記集的擴展。
XML的特點:
1.XML數據可以跨平臺使用并可以被人閱讀理解。
2.XML數據的內容和結構有明確的定義。
3.XML數據之間的關系得以強化。
4.XML數據的內容和數據的表現形式分離。
5.XML使用的結構是開放的、可擴展的。
XML文檔的組成:
1.XML的聲明
XML標準規定聲明必須放在文檔的第一行,聲明其實也是處理指令的一種。
聲明的常用屬性和常用值如下:
Version:1.0,聲明中必須包括此屬性且必須放在第一位,它指定了文檔所采用的XML版本號。
Encoding:GB2312,文檔使用的字符集為簡體中文;
BIG5,文檔使用的字符集為繁體中文;
UTF-8,文檔使用的字符集為壓縮的Unicode編碼;
UTF-16,文檔使用的字符集為UCS編碼。
Standalone:yes,文檔是獨立文檔,沒有DTD文檔與之配套;
no,表示可能有DTD文檔為本文檔進行位置聲明。
2.處理指令PI
處理XML的應用程序提供信息。
3.XML元素
元素是組成XML文檔的核心。XML語法規定每個XML文檔都要包括至少一個根元素。根標記必須是非空標記,包括整個文檔的數據內容,數據內容則是位于標記之間的內容。
文檔類型定義
文檔類型定義(Document Type Definition,DTD)是一種規范,在DTD中可以向XML的閱讀工具解釋XML文檔標記集中每一個標記的含義。DTD根據其出現的位置可以分為內部DTD和外部DTD兩種。內部DTD是指DTD和相應的XML文檔處在同一個文檔中,外部DTD就是DTD與XML文檔處在不同的文檔之中。
描述DTD文檔也需要一套語法結構,關鍵字是組成語法結構的基礎,構建DTD時常用的關鍵字有:
1.ANY:數據既可以是純文本也可以是子元素,多用來修飾根元素。
2.ATTLIST:定義元素的屬性。
3.DOCTYPE:描述根元素。
4.ELEMENT:描述所有子元素。
5.EMPTY:空元素。
6.SYSTEM:表示使用外部DTD文檔。
7.#FIXEDATTLIST:定義的屬性的值是固定。
8.#IMPLIEDATTLIST:定義的屬性不是必須賦值的。
9.#PCDATA:數據為純文本。
10.#REQUIREDATTLIST:定義的屬性是必須賦值的。
11.INCLUDE:表示包括的內容有效。
12.IGNORE:與INCLUDE相同,表示包括的內容無效。
DTD提供了一些運算表達式來描述XML文檔中的元素。用A、B、C代表XML文檔中的元素,常用的運算表達式如下:
1.A+:元素A至少出現一次。
2.A*:元素A可以出現很多次也可以不出現。
3.A?:元素A出現一次或不出現。
4.(A B C):元素A、B、C之間的間隔是空格,表示它們是無序排列。
5.(A,B,C):元素A、B、C之間的間隔是逗號,表示它們是有序排列。
6.A|B:元素A、B之間是邏輯或的關系。
雖然DTD能夠對XML文檔結構進行描述,但是它也有如下缺點:
1.DTA不支持數據類型,而在實際應用中往往會有多種復雜的數據類型。
2.DTA的標記是固定的,不能擴充標記。
3.DTA使用不同于XML的獨立性的語法規則。
可擴展樣式語言
可擴展樣式語言(Extensible Stylesheet Language,XSL),是W3C制定的另一種表現XML文檔的樣式語言。XSL是XML的應用,符合XML的語法規范,可以被XML的分析器處理。
XSL是一種語言,通過對XML文檔進行轉換,然后將轉換的結果表現出來。轉換的過程是根據XML文檔特性運行XSLT(XSL Transformation)將XML文檔轉換成帶信息的樹型結構。然后按照FO(Formatted Object)分析樹,從而將XML文檔表現出來。
XSL轉換XML文檔分為二個步驟:建樹和表現樹。建樹可以在服務器端執行,也可以在客戶端執行。在服務器端執行時,把XML文檔轉換成HTML文檔,然后發送到客戶端。而在客戶端執行建樹的話,客戶端必須支持XML和XSL。
XSL主要用來轉換XML文檔,在商業系統中它可以將XML文檔轉換成可以被各種系統或是應用程序解讀的數據。這非常有利于各種商業系統之間的數據交換。
XSL就是通過模板將源文件文檔按照模板的格式轉換成結果文檔的。模板定義了一系列的元素來描述源文檔中的數據和屬性等內容,在經過轉換之后,建立樹型結構。
XSL常用的模板如下:
1.xsl:apply-import:調用導入的外部模板,可以應用為部分文檔的模板。.
2.xsl:apply-templates:應用模板,通過select、mode兩個屬性確定要應用的模板。
3.xsl:attribute:為元素輸出定義屬性節點。
4.xsl:attribute-set:定義一組屬性節點。
5.xsl:call-template:調用由call-template指定的模板。
6.xsl:choose:根據條件調用模板。
7.xsl:comment:在輸出加入注釋。
8.xsl:copy:復制當前節點到輸出。
9.xsl:element:在輸出中創建新元素。
10.xsl:for-each:循環調用模板匹配每個節點
11.xsl:if:模板在簡單情況下的條件調用。
12.xsl:message:發送文本信息給消息緩沖區或消息對話框。
13.xsl:sort:排序節點。
14.xsl:stylesheet:指定樣式單。
15.xsl:template:指定模板。
16.xsl:value-of:為選定節點加入文本值。
XPath
XPath是XSL的重要組成部分。XPath的作用在于為XML文檔的內容定位,并通過XPath來訪問指定的XML元素。之所以要在XSL中引入XPath的概念,目的就是為了在匹配XML文檔結構樹時能夠準確地找到某一個節點元素。
XPath提供的節點匹配的方法:
1.路徑匹配:路徑匹配和文件路徑的表示比較相似,通過一系列的符號來指定路徑。
2.位置匹配:根據每個元素的子元素都是有序的原則來匹配。
3.親屬關系匹配:XML是一個樹型結構,因此在匹配時可以利用樹型結構的“父子”關系。
4.條件匹配:利用一些函數的運算結果的布爾值來匹配符合條件的節點。
.NET中實現的XML DOM
XML語言僅僅是是一種信息交換的載體,是一種信息交換的方法。要使用XML文檔必須通過使用接口。DOM是一個程序接口,應用程序和腳本可以通過這個接口訪問和修改XML文檔數據。DOM接口應用程序使得對XML文檔的訪問變得簡單。
DOM接口定義了一系列對象來實現對XML文檔數據的訪問和修改。DOM接口將XML文檔轉換為樹形的文檔結構,應用程序通過樹形文檔對XML文檔進行層次化的訪問,從而實現了對XML文檔的操作。
.NET類庫中支持DOM的類分為兩個層次:
基礎類和擴展類?;A類組包括了用來編寫操縱XML文檔的應用程序所需要的類;擴展類被定義用來簡化程序員的開發工作的類。
在基礎類中包含了三個類:
1.XmlNode類用來表示文檔樹中的單個節點,它描述了XML文檔中各種具體節點類型的共性,它是一個抽象類。
2.XmlNodeList類用來表示一個節點的有序集合,它提供了對迭代操作和索引器的支持。
3.XmlNamedNodeMap類用來表示一個節點的集合,該集合中的元素可以使用節點名或索引來訪問。
擴展類中主要包括了以下由XmlNode類派生出來的類:
1.XmlAttribute:表示一個屬性,此屬性的有效值和默認值在DTD或架構中進行定義。
2.XmlAttributeCollection:表示屬性集合,這些屬性集合的有效值和默認值在DTD或架構中進行定義。
3.XmlComment:表示XML文檔的注釋內容。
4.XmlDocument:表示XML文檔。
5.XmlDocumentType:表示XMl文檔的DOCTYPE聲明節點。
6.XmlElement:表示一個元素。
7.XmlEntity:表示XML文檔中一個解析過或為解析過的實體。
8.XmlEntityReference:表示一個實體的引用。
9.XmlLinkedNode:獲取緊靠該節點的節點。
10.XmlReader:表示提供對XML數據進行快速、非緩存、只進訪問的讀取器。
11.XmlText:表示元素或屬性的文本值。
12.XmlTextReader:表示提供對XML數據進行快速、非緩存、只進訪問的讀取器。
13.XmlTextWriter:表示提供快速、非緩存、只進方法的編寫器,該方法生成包含XML數據。
14.XmlWriter:表示提供快速、非緩存、只進方法的編寫器,該方法生成包含XML數據。
創建XML文檔
創建XML文檔的方法有兩種:
1.創建不帶參數的XmlDocument。
XmlDocument xmlDoc = new XmlDocument();//創建DOM對象
2. 創建帶參數的XmlDocument。
System.Xml.XmlDocument doc = new XmlDocument(xmlNameTable);
將XML數據讀入文檔
DOM可以將不同格式的XML讀入內存,這些格式可以是字符串、流、URL、文本讀取器或XmlReader的派生類。讀取的XML數據的方法有兩種:
1. Load方法,該方法加載指定的XML數據。
總共包含四個重載函數:
XmlDocument.Load (Stream):從指定的流加載XML文檔。
XmlDocument.Load (String):從指定的URL加載XML文檔。
XmlDocument.Load (TextReader):從指定的TextReader加載XML文檔。
XmlDocument.Load (XmlReader):從指定的XmlReader加載XML文檔。
2.LoadXML方法,該方法從字符串中讀取XML。
保存XML文檔
可以使用Save方法保存XML文檔。Save方法有四個重載方法:
1.Save(string filename):將文檔保存到文件filename的位置。
2.Save(System.IO.Stream outStream):保存到流outStream中,流的概念存在于文件操作中。
3.Save(System.IO.TextWriter writer):保存到TextWriter中,TextWriter也是文件操作中的一個類。
4.Save(XmlWriter w):保存到XmlWriter中。
將XML數據讀入文檔并保存。
新建項目,在項目中添加如下代碼:
1 XmlDocument document = new XmlDocument();2 document.LoadXml3 ("<student>"+4 "<stuNo>001</stuNo>"+5 "<stuName>韓明</stuName>"+6 "<Age>20</Age>"+7 "</student>");8 document.Save (@"C:/Users/light/Desktop/1.xml");
運行項目,會在桌面上生成1.xml文件。
創建新節點
XmlDocument具有用于所有節點類型的Create方法,XmlDocument常用的創建節點的方法如下:
1.CreateAttribute:創建具有指定名稱的XmlAttribute。
2.CreateCDataSection:創建包含指定數據的XmlCDataSection。
3.CreateComment:創建包含指定數據的XmlComment。
4.CreateDocumentType:返回新的XmlDocumentType對象。
5.CreateElement:創建XmlElement。
6.CreateEntityReference:創建具有指定名稱的XmlEntityReference。
7.CreateNode:創建XmlNode。
8.CreateTextNode:創建具有指定文本的XmlText。
創建新節點后,將新節點插入XML結構樹中的方法如下:
1.InsertBefore:插入到引用節點之前。
2.InsertAfter:插入到引用節點之后。
3.AppendChild:將節點添加到給定節點的子節點列表的末尾。
4.PRependChild:將節點添加到給定節點的子節點列表的開頭。
5.Append:將XmlAttribute節點追加到與元素關聯的屬性集合的末尾。
創建節點。
代碼如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Xml; 7 8 namespace Consoleapplication1 9 {10 class Program11 {12 static void Main(string[] args)13 {14 XmlDocument xmlDocument = new XmlDocument();//創建DOM對象15 xmlDocument.Load("Student.xml");//加載XML文檔16 XmlNode root = xmlDocument.SelectSingleNode("//Students");//獲取根節點17 XmlElement xe1 = xmlDocument.CreateElement("Student");//創建一個節點 18 19 XmlElement xesub1 = xmlDocument.CreateElement("name");//創建子節點20 xesub1.InnerText = "吳楠";//設置子節點的數據 21 xe1.AppendChild(xesub1);//添加到節點中 22 23 XmlElement xesub2 = xmlDocument.CreateElement("sex");//創建子節點24 xesub2.InnerText = "女";//設置子節點的數據 25 xe1.AppendChild(xesub2);//添加到節點中 26 27 XmlElement xesub3 = xmlDocument.CreateElement("age");//創建子節點28 xesub3.InnerText = "22";//設置子節點的數據 29 xe1.AppendChild(xesub3);//添加到節點中 30 31 root.AppendChild(xe1);//添加到根節點中32 xmlDocument.Save("Student.xml");//保存33 show();34 Console.ReadKey();35 }36 static void show()37 {38 XmlDocument xmlDoc = new XmlDocument();//創建DOM對象39 xmlDoc.Load("Student.xml");//加載XML文檔裝進DOM文檔40 XmlNodeList nodeList;//定義節點列表41 XmlNode root = xmlDoc.DocumentElement;//定義根節點,并把DOM的根節點賦給它42 nodeList = root.SelectNodes("//Student");43 foreach (XmlNode xmlNode in nodeList)//循環訪問結點列表44 {45 XmlNodeList list = xmlNode.ChildNodes;//獲取book節點下的所有結點46 foreach (XmlNode xmlNode1 in list)//遍歷子節點47 {48 Console.Write(xmlNode1.InnerText);//輸出節點包含的數據49 Console.Write(" ");50 }51 Console.WriteLine(" ");52 }53 }54 }55 }
修改XML文檔
常用的修改XML文檔的方法如下:
1.使用XmlNode.Value方法更改節點值。
2.通過用新節點替換節點來修改全部節點集,可以使用XmlNode.InnerXml屬性完成。
3.使用XmlNode.ReplaceChild方法用新節點替換現有節點。
4.使用XmlCharacterData.AppendData方法、XmlCharacterData.InsertData方法或XmlCharacterData.ReplaceData方法將附加字符添加到從XmlCharacter類繼承的節點。
5.對從XmlCharacterData繼承的節點類型使用DeleteData方法移除某個范圍的字符來修改內容。
6.使用SetAttribute方法更新屬性值。如果屬性不存在,創建一個新屬性;如果存在,更新屬性值。
刪除XML文檔的節點、屬性和內容
刪除節點
從DOM中移除節點,可以使用RemoveChild方法移除特定的節點。如果所移除的節點不是葉節點,當移除節點時,將移除節點的子樹。
若要移除多個節點,可以使用RemoveAll方法移除當前節點的所有子級和屬性。
如果使用XmlNamedNodeMap,也可以使用RemoveNamedItem方法移除節點。
刪除屬性集合中的屬性
使用XmlAttributeCollection.Remove方法移除特定屬性;
使用XmlAttributeCollection.RemoveAll方法移除集合中的所有屬性,使元素不具有任何屬性值;
使用XmlAttributeCollection.RemoveAt方法使用索引號移除屬性集合中的屬性。
刪除節點屬性
使用XmlElement.RemoveAllAttributes移除屬性集合;
使用XmlElement.RemoveAttribute方法按名稱移除集合中的單個屬性;
使用XmlElement.RemoveAttributeAt按索引號移除集合中的單個屬性。
刪除節點內容
使用DeleteData方法移除字符,該方法從節點中移除某個范圍的。
刪除節點。
代碼如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Xml; 7 8 namespace ConsoleApplication1 9 {10 class Program11 {12 static void Main(string[] args)13 {14 delete();15 show();16 Console.ReadKey();17 }18 static void show()19 {20 XmlDocument xmlDoc = new XmlDocument();//創建DOM對象21 xmlDoc.Load("Student.xml");//加載XML文檔裝進DOM文檔22 XmlNodeList nodeList;//定義節點列表23 XmlNode root = xmlDoc.DocumentElement;//定義根節點,并把DOM的根節點賦給它24 nodeList = root.SelectNodes("//Student");25 foreach (XmlNode xmlNode in nodeList)//循環訪問結點列表26 {27 XmlNodeList list = xmlNode.ChildNodes;//獲取book節點下的所有結點28 foreach (XmlNode xmlNode1 in list)//遍歷子節點29 {30 Console.Write(xmlNode1.InnerText);//輸出節點包含的數據31 Console.Write(" ");32 }33 Console.WriteLine(" ");34 }35 }36 static void delete()37 {38 try39 {40 XmlDocument xmlDoc = new XmlDocument();//創建DOM對象41 xmlDoc.Load("Student.xml");//加載XML文檔裝進DOM文檔42 XmlNode root = xmlDoc.SelectSingleNode("//Students//Student[name='吳楠']");//獲取根節點43 if (root != null)44 {45 root.ParentNode.RemoveChild(root);//刪除改節點46 Console.WriteLine("刪除節點成功!");47 }48 else49 {50 Console.WriteLine("未找到要刪除的節點!");51 }52 //root.pRemoveChild();53 xmlDoc.Save("Student.xml");//保存54 }55 catch(Exception ex)56 {57 Console.WriteLine(ex.Message.ToString());58 }59 Console.ReadKey();60 }61 }62 }
使用XPath導航選擇節點
使用XPath導航可以方便的查詢DOM中的信息。
DOM包含的方法允許使用XPath導航查詢DOM中的信息。可以使用XPath查找單個特定節點或查找與某個條件匹配的所有節點。
DOM類提供兩種XPath選擇方法。SelectSingleNode方法返回符合選擇條件的第一個節點,SelectNodes方法返回包含匹配節點的XmlNodeList。
Dataset與XML
DataSet是基于XML的,具有多種XML特性。DataSet對象和XMLDataDocument對象可以同時操作內存中的同一數據,無論哪個對象對該數據進行修改都會反映到另一對象里面。
把XML數據讀入DataSet對象
DataSet對象提供了一個名為ReadXmlSchema的方法,利用該方法可以從已經存在的XMLSchema來建立數據模式。ReadXmlSchema方法的重載方法如下:
1. ReadXmlSchema(string fileName):從指定的文件讀取XML Schema。
1 //使用文件名2 DataSet dataSet = new DataSet();3 dataSet.ReadXmlSchema(Server.MapPath("Student.xml"));
2. ReadXmlSchema(System.IO.Stream stream):從流中讀取XML Schema。
1 //使用流對象2 DataSet dataSet = new DataSet();3 System.IO.FileStream fileStream = new System.IO.FileStream("Student.xml", System.IO.FileMode.Open);4 dataSet.ReadXmlSchema(fileStream);5 fileStream.Close();
3. ReadXmlSchema(System.IO.TextReader reader):讀取存在于TextReader的XML Schema。
1 //使用TextReader2 DataSet dataSet = new DataSet();3 //StreamReader是TextReader的派生類4 System.IO.StreamReader streamReader = new System.IO.StreamReader(Server.MapPath("Student.xml"));5 dataSet.ReadXmlSchema(streamReader);6 streamReader.Close();
4. ReadXmlSchema(XmlReader reader):讀取存在于XmlReader的XML Schema。
1 //使用XmlReader2 DataSet dataSet = new DataSet();3 //XmlTextReader是XmlReader的派生類4 System.IO.FileStream fileStream = new System.IO.FileStream("Student.xml", System.IO.FileMode.Open);5 System.Xml.XmlTextReader xmlReader = new System.Xml.XmlTextReader(fileStream);6 dataSet.ReadXmlSchema(xmlReader);7 xmlReader.Close();
DataSet對象還提供了一個ReadXml方法來讀取XML文件或流。
ReadXml方法對于每一種XML數據來源(流、文件、TextReader和XmlReader),都提供了兩種形式的重載函數:
1.僅包含一個指定XML數據來源的參數。
2.包含指定XML數據來源的參數和指定讀取數據時生成數據模式Schema的行為。
DataSet寫出XML數據
DataSet對象使用一個GetXml方法來將數據導出為一個XML字符串,使用GetXmlSchema方法將數據的組織模式導出為一個XML Schema字符串。
DataSet還提供了WriteXml和WriteXmlSchema方法來把DataSet對象中的數據和Schema以XML的形式寫出。
Dom對象與DataSet對象的同步化
在.NET框架里,程序員可以使用DOM對象和DataSet對象這兩種數據視圖對同一數據進行操作,并且這種操作是同步的。
.NET框架提供了一個XmlDataDocument類來實現與DataSet對象的同步化。XmlDataDocument類是XmlDocument類的一個派生類,該類不僅可以將XML文檔載入內存中,這些載入內存中的結構化數據可以被DataSet對象獲取和操縱,而且由于XmlDataDocument類是XmlDocument類的派生,它可以應用在任何使用XmlDocument對象的地方。
當DataSet與XmlDataDocument同步時,這兩個對象都可使用同一組數據。這意味著如果對DataSet作出更改,更改將在XmlDataDocument中得到反映,反之亦然。
使DataSet與XmlDataDocument同步,常見的方法如下。
1. 使用架構(即關系結構)和數據填充 DataSet,然后使其與新 XmlDataDocument 同步。這將提供現有關系數據的分層視圖。
2. 創建一個新的XmlDataDocument并從XML文檔中加載,然后使用XmlDataDocument的DataSet屬性訪問數據的關系視圖。若要使用DataSet查看mlDataDocument中的數據,需要先設置DataSet的架構。當然,DataSet架構中的表名稱和列名稱必須要與其同步的XML元素的名稱匹配,該匹配區分大小寫。
XML數據綁定
asp.net提供了一個XML控件,該控件可以方便地在頁面上顯示XML數據。XML控件具有以下兩個屬性:
1.DocumentSource:該屬性用來指定要顯示的XML數據文件。
2.TransformSource:該屬性用來指定轉換XML數據的XSL文件。
在GridView控件顯示XML數據,可以使用數據源控件XmlDataSource,此控件允許從一個文件讀取XML數據,然后把數據填充到GridView控件中。
XML控件的使用:
添加XML文件Student.xml,代碼如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <Students> 3 <Student> 4 <name>李瑩</name> 5 <sex>女</sex> 6 <age>23</age> 7 </Student> 8 <Student> 9 <name>吳楠</name>10 <sex>女</sex>11 <age>20</age>12 </Student>13 <Student>14 <name>王宇</name>15 <sex>男</sex>16 <age>23</age>17 </Student>18 </Students>
添加XSL文件style1.xsl,代碼如下:
1 <?xml version="1.0" encoding="gb2312"?> 2 3 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 4 5 <xsl:template match="Students"> 6 <html> 7 <body> 8 <table> 9 <tr>10 <th>name</th>11 <th>sex</th>12 <th>age</th>13 </tr>14 <xsl:for-each select="Student">15 <tr>16 <td>17 <xsl:value-of select="name"/>18 </td>19 <td>20 <xsl:value-of select="sex"/>21 </td>22 <td>23 <xsl:value-of select="age"/>24 </td>25 </tr>26 </xsl:for-each>27 </table>28 </body>29 </html>30 </xsl:template>31 </xsl:stylesheet>
在Form1.aspx中添加XML控件,并設置屬性,代碼如下:
1 <div>2 <asp:Xml ID="Xml1" runat="server" DocumentSource="~/Student.xml" TransformSource="~/style1.xsl">3 </asp:Xml>4 </div>
在GridView控件顯示XML數據,可以使用數據源控件XmlDataSource,此控件允許從一個文件讀取XML數據,然后把數據填充到GridView控件中。
使用XmlDataSource控件把XML數據綁定到GridView控件中:
添加XML文件Student.xml,代碼如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <Students> 3 <Student> 4 <name>李瑩</name> 5 <sex>女</sex> 6 <age>23</age> 7 </Student> 8 <Student> 9 <name>吳楠</name>10 <sex>女</sex>11 <age>20</age>12 </Student>13 <Student>14 <name>王宇</name>15 <sex>男</sex>16 <age>23</age>17 </Student>18 </Students>
在Form1.aspx中添加XmlDataSource和GridView控件,并設置屬性,代碼如下:
1 <div> 2 <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/Student.xml" /> 3 <asp:GridView ID="GridView1" runat="server" DataSourceID="XmlDataSource1" AutoGenerateColumns="false"> 4 <Columns> 5 <asp:TemplateField HeaderText="姓名"> 6 <ItemTemplate><%#XPath ("name") %></ItemTemplate> 7 </asp:TemplateField> 8 <asp:TemplateField HeaderText="性別"> 9 <ItemTemplate><%#XPath ("sex") %>></ItemTemplate>10 </asp:TemplateField>11 <asp:TemplateField HeaderText="年齡">12 <ItemTemplate><%#XPath ("age") %>></ItemTemplate>13 </asp:TemplateField>14 </Columns>15 </asp:GridView>16 </div>
使用XmlDataSource控件把XML數據綁定到TreeView控件中:
添加XML文件Student.xml,代碼如下:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <Students> 3 <Student> 4 <name>李瑩</name> 5 <sex>女</sex> 6 <age>23</age> 7 </Student> 8 <Student> 9 <name>吳楠</name>10 <sex>女</sex>11 <age>20</age>12 </Student>13 <Student>14 <name>王宇</name>15 <sex>男</sex>16 <age>23</age>17 </Student>18 </Students>
在Form1.aspx中添加XmlDataSource和TreeView控件,設置屬性并添加數據綁定,代碼如下:
1 <div> 2 <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/Student.xml" /> 3 <asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1"> 4 <DataBindings> 5 <asp:TreeNodeBinding DataMember="Students" Text="學生列表" /> 6 <asp:TreeNodeBinding DataMember="Student" TextField="stuName" /> 7 <asp:TreeNodeBinding DataMember="sex" TextField="#InnerText" /> 8 <asp:TreeNodeBinding DataMember="age" TextField="#InnerText" /> 9 </DataBindings>10 </asp:TreeView>11 </div>
新聞熱點
疑難解答