国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

ADO.NET系列之操作XML

2019-11-17 01:37:13
字體:
供稿:網(wǎng)友
ADO.NET系列之操作xml

  如題,我們保存數(shù)據(jù)的方式有很多種。在asp.net中,可以通過js賦值隱藏域的方式,也可以通過ViewState,session這樣的內(nèi)置對象,還可以通過數(shù)據(jù)庫的形式。現(xiàn)在經(jīng)常用到的就是XML了,它的結(jié)構(gòu)靈活,同時占用的空間很少,也比較容易操作,今天我們就來說說ADO.NET中,如何去操作XML。

  首先我們可以在一個頁面上,放入一個GridView用來顯示讀取的XML的數(shù)據(jù)(這里使用的是經(jīng)典的books.xml,在一些網(wǎng)站上可以下載),同時再放入一個富文本框來顯示特定的節(jié)點,還有一個按鈕用于點擊后在文本框中顯示XML特定節(jié)點的內(nèi)容:

  

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="XmlToDataTable.aspx.cs"    Inherits="Webapplication1.XmlToDataTable" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title></title></head><body>    <form id="form1" runat="server">    <div>        <asp:TextBox ID="txtShow" runat="server" TextMode="MultiLine" Width="100%"></asp:TextBox>        <asp:GridView ID="gvXML" runat="server" AutoGenerateColumns="false">            <Columns>                <asp:BoundField HeaderText="Id" DataField="id" />                <asp:BoundField HeaderText="Author" DataField="author" />                <asp:BoundField HeaderText="Title" DataField="title" />                <asp:BoundField HeaderText="Genre" DataField="genre" />                <asp:BoundField HeaderText="

  大家可以看到我在GridView中綁定了一些列,而這些列正是我們的XML擁有的一些節(jié)點:

  

<?xml version="1.0"?>-<catalog> -<book id="bk101"> <author>Gambardella, Matthew</author> <title>XML Developer's Guide</title> <genre>Computer</genre> <price>44.95</price> <publish_date>2000-10-01</publish_date> <description>An in-depth look at creating applications with XML.</description> </book> +<book id="bk102"> -<book id="bk103"> <author>Corets, Eva</author> <title>Maeve Ascendant</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2000-11-17</publish_date> <description>After the collapse of a nanotechnology society in England, the young survivors lay the foundation for a new society.</description> </book> -<book id="bk104"> <author>Corets, Eva</author> <title>Oberon's Legacy</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2001-03-10</publish_date> <description>In post-apocalypse England, the mysterious agent known only as Oberon helps to create a new life for the inhabitants of London. Sequel to Maeve Ascendant.</description> </book> -<book id="bk105"> <author>Corets, Eva</author> <title>The Sundered Grail</title> <genre>Fantasy</genre> <price>5.95</price> <publish_date>2001-09-10</publish_date> <description>The two daughters of Maeve, half-sisters, battle one another for control of England. Sequel to Oberon's Legacy.</description> </book> -<book id="bk106"> <author>Randall, Cynthia</author> <title>Lover Birds</title> <genre>Romance</genre> <price>4.95</price> <publish_date>2000-09-02</publish_date> <description>When Carla meets Paul at an ornithology conference, tempers fly as feathers get ruffled.</description> </book> -<book id="bk107"> <author>Thurman, Paula</author> <title>Splish Splash</title> <genre>Romance</genre> <price>4.95</price> <publish_date>2000-11-02</publish_date> <description>A deep sea diver finds true love twenty thousand leagues beneath the sea.</description> </book> -<book id="bk108"> <author>Knorr, Stefan</author> <title>Creepy Crawlies</title> <genre>Horror</genre> <price>4.95</price> <publish_date>2000-12-06</publish_date> <description>An anthology of horror stories about roaches, centipedes, scorpions and other insects.</description> </book> -<book id="bk109"> <author>Kress, Peter</author> <title>Paradox Lost</title> <genre>Science Fiction</genre> <price>6.95</price> <publish_date>2000-11-02</publish_date> <description>After an inadvertant trip through a Heisenberg Uncertainty Device, James Salway discovers the problems of being quantum.</description> </book> -<book id="bk110"> <author>O'Brien, Tim</author> <title>Microsoft .NET: The Programming Bible</title> <genre>Computer</genre> <price>36.95</price> <publish_date>2000-12-09</publish_date> <description>Microsoft's .NET initiative is explored in detail in this deep programmer's reference.</description> </book> -<book id="bk111"> <author>O'Brien, Tim</author> <title>MSXML3: A Comprehensive Guide</title> <genre>Computer</genre> <price>36.95</price> <publish_date>2000-12-01</publish_date> <description>The Microsoft MSXML3 parser is covered in detail, with attention to XML DOM interfaces, XSLT processing, SAX and more.</description> </book> -<book id="bk112"> <author>Galos, Mike</author> <title>Visual Studio 7: A Comprehensive Guide</title> <genre>Computer</genre> <price>49.95</price> <publish_date>2001-04-16</publish_date> <description>Microsoft Visual Studio 7 is explored in depth, looking at how Visual Basic, Visual C++, C#, and ASP+ are integrated into a comprehensive development environment.</description> </book> </catalog>

  嗯,貌似看起來有些亂,不過馬上我們處理了之后,它就會變得整齊。接下來在后臺我們開始操作XML,首先我們需要讓GridView顯示數(shù)據(jù):首先我們需要建立一個數(shù)據(jù)集DataSet,然后使用ADO.NET中自帶的方法去讀取XML,這里的實現(xiàn)很簡單:

  

 DataSet ds = new DataSet();  string Path = Server.MapPath("XML/books.xml"); ds.ReadXml(Path);

  這樣我們的ds中就已經(jīng)有數(shù)據(jù)了,接下來綁定GridView后,呈現(xiàn)出來的就是這樣:

  

  這時候我們的XML已經(jīng)讀取成功了,接下來我們可以簡單的操作下XML中的節(jié)點:

  

       private void ShowXML(string Path)         {              XmlDocument doc = new XmlDocument();            doc.Load(Path);            XmlNodeList nodeList = doc.SelectNodes("http://title");            foreach(XmlNode node in nodeList)                        {                txtShow.Text += node.InnerXml + "/r/n";            }        }        protected void btnExport_Click(object sender, EventArgs e)        {            string Path = Server.MapPath("XML/books.xml");            ShowXML(Path);        }

   這里我們用到了XmlDocument類,這個類是用于表示整個XML的DOM,另外一個XmlNode類是表示XML中的一個節(jié)點,而XmlNodeList則是表示可以迭代的,XmlNode的一個集合,我們在這里是在加載了DOM對象后,選擇了title節(jié)點的集合,然后遍歷出每個節(jié)點下的內(nèi)容并賦值給txtShow,效果如下:

  

  至此我們已經(jīng)成功讀取到該節(jié)點,關于XML的簡單操作就介紹到這里。XML的其他操作還有XmlPath的方式,以及各種其他復雜的方式。不過對于XML本身,可以理解為一個DOM,也就是一種特殊的HTML,它擁有自己的標記格式,拋磚引玉,希望大家提出批評和建議。

  ---------------------------------------------------分割線-----------------------------------------------------------

  之前因為手誤的原因,在本地的方法中加入了ds這個參數(shù),后來發(fā)現(xiàn)文中完全沒有用到這個參數(shù),感謝@佩恩六道的指正,原文已經(jīng)修改。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 土默特左旗| 镇远县| 汉源县| 阿瓦提县| 石渠县| 阿拉善左旗| 深泽县| 凉城县| 华亭县| 凤翔县| 海淀区| 文山县| 吴川市| 崇阳县| 井冈山市| 建昌县| 合作市| 桐柏县| 游戏| 修武县| 高阳县| 贵定县| 芦溪县| 七台河市| 曲松县| 马鞍山市| 深水埗区| 安图县| 和林格尔县| 沙田区| 郴州市| 东宁县| 云安县| 安新县| 循化| 仁化县| 石阡县| 邵阳市| 厦门市| 兴和县| 栾川县|