日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)編程開(kāi)發(fā)C#.NET → C#中怎么去用XML實(shí)例

      C#中怎么去用XML實(shí)例

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2012/12/11 8:59:21字體大。A-A+

      作者:西西點(diǎn)擊:1198次評(píng)論:0次標(biāo)簽: XML

      • 類型:編程工具大。149.3M語(yǔ)言:中文 評(píng)分:10.0
      • 標(biāo)簽:
      立即下載

      在學(xué)習(xí)XML之前我們先想一下,在之前我們見(jiàn)過(guò)這個(gè)東西么?

      主要作用是做數(shù)據(jù)的存儲(chǔ),而HTML是做數(shù)據(jù)的展現(xiàn).

      當(dāng)我們用數(shù)據(jù)庫(kù)存儲(chǔ)的時(shí)候的優(yōu)點(diǎn)是,安全度高,查詢方便.缺點(diǎn)就是數(shù)據(jù)量小的時(shí)候,用數(shù)據(jù)庫(kù)有點(diǎn)殺雞用牛刀的感覺(jué).而且數(shù)據(jù)庫(kù)這種存儲(chǔ)方式必須依賴某個(gè)軟件才能查看.

      用文本文件的優(yōu)點(diǎn)是,快速,方便.缺點(diǎn)就是:不安全.設(shè)計(jì)格式不太方便.

      XML是個(gè)文本文件,任何操作系統(tǒng)都能識(shí)別,能把我們要的數(shù)據(jù)結(jié)構(gòu)化的存儲(chǔ)起來(lái).

      Office2007的文件格式docx、xlsx、pptx都是xml,先改成rar文件然后解壓。

      XML和HTML的區(qū)別:

      XML有且只能有一個(gè)根元素

      XML嚴(yán)格區(qū)分大小寫(xiě)—如果是大寫(xiě)就全是大寫(xiě),如果是小寫(xiě)就全是小寫(xiě)

      XML中的屬性都必須用引號(hào)引起來(lái)(推薦:雙引號(hào))

      元素有開(kāi)始,必須有結(jié)束.

                   

               

      一、XML和HTML的區(qū)別演示代碼

      HTML有一些預(yù)定義的標(biāo)簽,而XML則沒(méi)有。HTML標(biāo)簽不能擴(kuò)展,XML可以擴(kuò)展。除了頭上面這個(gè)是預(yù)定義好的:<?xml version=”1.0” encoding=”gb2312”?>

        在XML里面有一個(gè)規(guī)范xsd,在這里我們不學(xué)怎么寫(xiě)規(guī)范,只是學(xué)習(xí)一下怎么去用XML就可以了。

       

      二、應(yīng)用程序配置文件

      這個(gè)配置文件就是個(gè)XML文件,經(jīng)常用的就是數(shù)據(jù)庫(kù)連接。

       

      三、XML文檔規(guī)范

      XML當(dāng)中的嵌套問(wèn)題:

       

      四、XML當(dāng)中的嵌套

      用記事本就可以編寫(xiě)XML文件,通過(guò)程序來(lái)寫(xiě)怎么來(lái)寫(xiě)呢?

      1.Dom[XmlDocument、XDocument](文檔對(duì)象模型,將整個(gè)xml加載到內(nèi)存中,然后操作)、

      2.Sax(事件驅(qū)動(dòng),.net中使用XmlReader(XmlTextReader)、XmlWriter(XmlTextWriter)來(lái)替代)等,還有高級(jí)的讀寫(xiě)技術(shù)

      3.XmlSerializer(xml序列化,需要先定義類)、

      4.Linq To XML(System.Xml.Linq)等, XmlSerializer要求對(duì)每種不同的文件都定義一套類,很麻煩,而Linq To XML則不需要單獨(dú)創(chuàng)建類,當(dāng)然更底層一些,代碼比XmlSerializer多,靈活性更高。System.Xml下的類是2.0及之前操作xml推薦的,現(xiàn)在很多人也仍然在用這個(gè)namespace下的類,這個(gè)namespace下的類和Linq To XML非常相似,因此不用單獨(dú)學(xué)。

      下面我們手動(dòng)寫(xiě)一個(gè)XML.我就用記事本寫(xiě)了.

      存儲(chǔ)單位的所有的員工:

       

      五、新建xml文件

      插入手寫(xiě)的XML文件,存儲(chǔ)員工信息。

       1 <?xml version="1.0" encoding="gb2312"?>
       2 <guoxing>
       3 <technicalsection  count="50" room="1403">
       4 <employee TNo="gx001">
       5 <name>陳濤</name>
       6 <age>18</age>
       7 <gender>男</gender>
       8 </employee>
       9 <employee TNo="gx001">
      10 <name>陳濤2</name>
      11 <age>18</age>
      12 <gender>男</gender>
      13 </employee>
      14 <employee TNo="gx001">
      15 <name>陳濤3</name>
      16 <age>18</age>
      17 <gender>男</gender>
      18 </employee>
      19 <employee TNo="gx001">
      20 <name>陳濤4</name>
      21 <age>18</age>
      22 <gender>男</gender>
      23 </employee>
      24 <employee TNo="gx001">
      25 <name>陳濤5</name>
      26 <age>18</age>
      27 <gender>男</gender>
      28 </employee>
      29 </technicalsection>
      30 
      31 <salesdepartment count="50" room="1506">
      32 
      33 </salesdepartment>
      34 </guoxing>

      可以用瀏覽器進(jìn)行預(yù)覽。

       

      六、在瀏覽器中進(jìn)行預(yù)覽的效果

      接下來(lái)我們就介紹通過(guò)程序來(lái)寫(xiě)一個(gè)XML文件。和通過(guò)程序來(lái)讀XML文件。

      下把我們剛自己手動(dòng)寫(xiě)好的XML文件拷入程序,然后,讀取下。

       

      七、添加X(jué)ML文件

       

      八、遞歸輸出每個(gè)節(jié)點(diǎn)

      在還有子元素的情況下,我們

      這里已經(jīng)沒(méi)辦法再遍歷出來(lái)了。所以在這里我們就考慮遞歸了。

      九、遞歸顯示每個(gè)子元素代碼

      接下來(lái)我們?cè)谧x取其中的屬性

       

      十、輸出屬性的代碼

      現(xiàn)在我只想輸出count屬性,怎么辦呢?

      item.Attribute(“count”);//根據(jù)屬性名來(lái)獲取指定的屬性的值。

      在name標(biāo)簽里面還有值,怎么才能打印出來(lái)里面的值呢?當(dāng)沒(méi)有子元素的時(shí)候就把值打印出來(lái)。

      判斷一下當(dāng)前標(biāo)簽是否有子元素。

       

      十一、把沒(méi)有子元素的值也打印出來(lái)

      上面我們是把XML顯示在控制臺(tái)上了,要是加載到treeview就比較的清晰了。(作業(yè))

      XML當(dāng)中的其它一些個(gè)基本概念。

      在XML當(dāng)中可以寫(xiě)個(gè)注釋

      注釋不能算是XML的元素,但是這些都是XML的節(jié)點(diǎn)。所以注釋打印不出來(lái)。

      xdoc.Elements()//只返回元素

      xdoc.Nodes()返回所有節(jié)點(diǎn)(包括注釋等。)

      xeRoot.Elements(“net”)搜索直接子元素

      xeRoot.Descendants(“net”);搜索所有后代元素。

      將XML文件遞歸加載到treeview上。

       

      十二、畫(huà)好界面,加載好文件

       

      十三、遞歸到樹(shù)

      網(wǎng)頁(yè)RSS訂閱

      打開(kāi)網(wǎng)站看新聞的時(shí)候,會(huì)有很多的廣告。在網(wǎng)站上找到RSS。

       

      十四、點(diǎn)擊:XML訂閱

      對(duì)于各大網(wǎng)站,如果我們只看新聞的標(biāo)題,不看內(nèi)容的話,對(duì)于我們看新聞來(lái)講會(huì)更加的直接。

      打開(kāi)foxmail

       

      十五、RSS訂閱

      formail是怎么得到網(wǎng)頁(yè)當(dāng)天的新聞的呢?是連上網(wǎng)頁(yè)的數(shù)據(jù)庫(kù)了么?這是不可能的。我們把剛才的網(wǎng)頁(yè)xml文件下載-另存為一下。

       

      十六、下載xml文件

       

      十七、用高級(jí)記事本打開(kāi)看下里面的內(nèi)容

      想讓它正常格式顯示的話,復(fù)制-粘貼到xml文件

       

      十八、新建xml文件

      在我們的編輯工具里面,ctrl+K+D,自動(dòng)格式化了。去掉外部樣式表,就跟我們自己寫(xiě)的xml一回事兒了。

       

      十九、普通的xml文件

      xml文件當(dāng)中只有一個(gè)根節(jié)點(diǎn),包含了什么內(nèi)容呢?包含channel這個(gè)節(jié)點(diǎn)。formail通過(guò)title識(shí)別哪個(gè)頻道,我們的formail之所以能看到新聞,就是它讀取并且解析了這個(gè)xml文件。

      把這個(gè)xml文件放到我們寫(xiě)的項(xiàng)目下,

       

      二十、也能實(shí)現(xiàn)加載內(nèi)容

      xml案例

      讀取order.xml文件,一行一行的輸出。

       

      二十一、將xml文件拷貝過(guò)來(lái)

       

      二十二、需要我們讀取并且輸出的xml文件

       

      二十三、讀取訂單xml文件內(nèi)容并輸出的代碼

      我們?cè)诳聪旅嬉粋(gè)案例:

       

      二十四、銀行交易數(shù)據(jù)讀寫(xiě)

      案例中需要用到的XML文件插入位置:

        1 <?xml version="1.0" encoding="utf-8" ?> 
        2 <CFX>
        3         <MSG>
        4             <交易碼  val="1000"/>
        5             <流水號(hào)  val="100000000000000001"/>
        6             <金額  val="1234567890.12"/>
        7             <付款機(jī)構(gòu)  val="騰訊銷(xiāo)售部"/>
        8             <付款單位賬號(hào)  val="12345678901234567890"/>
        9             <收款機(jī)構(gòu)  val="新浪財(cái)務(wù)部"/>
       10             <收款單位賬號(hào)  val="12345678901234567890"/>
       11         </MSG>
       12         <MSG>
       13             <交易碼  val="1000"/>
       14             <流水號(hào)  val="100000000000000002"/>
       15             <金額  val="1234567890.12"/>
       16             <付款機(jī)構(gòu)  val="1234"/>
       17             <付款單位賬號(hào)  val="12345678901234567890"/>
       18             <收款機(jī)構(gòu)  val="1234"/>
       19             <收款單位賬號(hào)  val="12345678901234567890"/>
       20         </MSG>
       21         <MSG>
       22             <交易碼  val="1000"/>
       23             <流水號(hào)  val="100000000000000003"/>
       24             <金額  val="1234567890.12"/>
       25             <付款機(jī)構(gòu)  val="1234"/>
       26             <付款單位賬號(hào)  val="12345678901234567890"/>
       27             <收款機(jī)構(gòu)  val="1234"/>
       28             <收款單位賬號(hào)  val="12345678901234567890"/>
       29         </MSG>
       30         <MSG>
       31             <交易碼  val="1000"/>
       32             <流水號(hào)  val="100000000000000004"/>
       33             <金額  val="1234567890.12"/>
       34             <付款機(jī)構(gòu)  val="1234"/>
       35             <付款單位賬號(hào)  val="12345678901234567890"/>
       36             <收款機(jī)構(gòu)  val="1234"/>
       37             <收款單位賬號(hào)  val="12345678901234567890"/>
       38         </MSG>
       39         <MSG>
       40             <交易碼  val="1000"/>
       41             <流水號(hào)  val="100000000000000005"/>
       42             <金額  val="1234567890.12"/>
       43             <付款機(jī)構(gòu)  val="1234"/>
       44             <付款單位賬號(hào)  val="12345678901234567890"/>
       45             <收款機(jī)構(gòu)  val="1234"/>
       46             <收款單位賬號(hào)  val="12345678901234567890"/>
       47         </MSG>
       48         <MSG>
       49             <交易碼  val="1000"/>
       50             <流水號(hào)  val="100000000000000006"/>
       51             <金額  val="1234567890.12"/>
       52             <付款機(jī)構(gòu)  val="1234"/>
       53             <付款單位賬號(hào)  val="12345678901234567890"/>
       54             <收款機(jī)構(gòu)  val="1234"/>
       55             <收款單位賬號(hào)  val="12345678901234567890"/>
       56         </MSG>
       57         <MSG>
       58             <交易碼  val="1000"/>
       59             <流水號(hào)  val="100000000000000007"/>
       60             <金額  val="1234567890.12"/>
       61             <付款機(jī)構(gòu)  val="1234"/>
       62             <付款單位賬號(hào)  val="12345678901234567890"/>
       63             <收款機(jī)構(gòu)  val="1234"/>
       64             <收款單位賬號(hào)  val="12345678901234567890"/>
       65         </MSG>
       66         <MSG>
       67             <交易碼  val="1000"/>
       68             <流水號(hào)  val="100000000000000008"/>
       69             <金額  val="1234567890.12"/>
       70             <付款機(jī)構(gòu)  val="1234"/>
       71             <付款單位賬號(hào)  val="12345678901234567890"/>
       72             <收款機(jī)構(gòu)  val="1234"/>
       73             <收款單位賬號(hào)  val="12345678901234567890"/>
       74         </MSG>
       75         <MSG>
       76             <交易碼  val="1000"/>
       77             <流水號(hào)  val="100000000000000009"/>
       78             <金額  val="1234567890.12"/>
       79             <付款機(jī)構(gòu)  val="1234"/>
       80             <付款單位賬號(hào)  val="12345678901234567890"/>
       81             <收款機(jī)構(gòu)  val="1234"/>
       82             <收款單位賬號(hào)  val="12345678901234567890"/>
       83         </MSG>
       84         <MSG>
       85             <交易碼  val="1000"/>
       86             <流水號(hào)  val="100000000000000010"/>
       87             <金額  val="1234567890.12"/>
       88             <付款機(jī)構(gòu)  val="1234"/>
       89             <付款單位賬號(hào)  val="12345678901234567890"/>
       90             <收款機(jī)構(gòu)  val="1234"/>
       91             <收款單位賬號(hào)  val="12345678901234567890"/>
       92         </MSG>
       93         <MSG>
       94             <交易碼  val="1000"/>
       95             <流水號(hào)  val="100000000000000011"/>
       96             <金額  val="1234567890.12"/>
       97             <付款機(jī)構(gòu)  val="1234"/>
       98             <付款單位賬號(hào)  val="12345678901234567890"/>
       99             <收款機(jī)構(gòu)  val="1234"/>
      100             <收款單位賬號(hào)  val="12345678901234567890"/>
      101         </MSG>
      102         <MSG>
      103             <交易碼  val="1000"/>
      104             <流水號(hào)  val="100000000000000012"/>
      105             <金額  val="1234567890.12"/>
      106             <付款機(jī)構(gòu)  val="1234"/>
      107             <付款單位賬號(hào)  val="12345678901234567890"/>
      108             <收款機(jī)構(gòu)  val="1234"/>
      109             <收款單位賬號(hào)  val="12345678901234567890"/>
      110         </MSG>
      111         <MSG>
      112             <交易碼  val="1000"/>
      113             <流水號(hào)  val="100000000000000013"/>
      114             <金額  val="1234567890.12"/>
      115             <付款機(jī)構(gòu)  val="1234"/>
      116             <付款單位賬號(hào)  val="12345678901234567890"/>
      117             <收款機(jī)構(gòu)  val="1234"/>
      118             <收款單位賬號(hào)  val="12345678901234567890"/>
      119         </MSG>
      120         <MSG>
      121             <交易碼  val="1000"/>
      122             <流水號(hào)  val="100000000000000014"/>
      123             <金額  val="1234567890.12"/>
      124             <付款機(jī)構(gòu)  val="1234"/>
      125             <付款單位賬號(hào)  val="12345678901234567890"/>
      126             <收款機(jī)構(gòu)  val="1234"/>
      127             <收款單位賬號(hào)  val="12345678901234567890"/>
      128         </MSG>
      129         <MSG>
      130             <交易碼  val="1000"/>
      131             <流水號(hào)  val="100000000000000015"/>
      132             <金額  val="1234567890.12"/>
      133             <付款機(jī)構(gòu)  val="1234"/>
      134             <付款單位賬號(hào)  val="12345678901234567890"/>
      135             <收款機(jī)構(gòu)  val="1234"/>
      136             <收款單位賬號(hào)  val="12345678901234567890"/>
      137         </MSG>
      138 </CFX>

      在做之前我們先分析一下這個(gè)XML文件,有一個(gè)根節(jié)點(diǎn)CFX,有多條MSG。每個(gè)MSG里面包括交易碼,流水號(hào),金額。

       

      二十五、還是先把XML文件拷貝過(guò)來(lái)

       

      二十六、讀取交易記錄的xml的代碼

       現(xiàn)在我們觀察這么一段XML文件。

                             

      二十七、需要觀察的xml代碼

      文件中有四位同學(xué),現(xiàn)在請(qǐng)獲取一年級(jí)同學(xué)的信息。

      現(xiàn)在我們有種相對(duì)簡(jiǎn)單的辦法。

       

      二十八、引入xml文件

       

      二十九、XmlDocument所在的命名空間

       

      三十、xpath應(yīng)用演示

      大家在MSDN里面輸入xpath就能找到xpath每個(gè)表達(dá)式每個(gè)意思。

      下面是我搜集的xpath表達(dá)式的連接,大家可以點(diǎn)擊查看。

      XPath 表達(dá)式

      下面我們先說(shuō)一個(gè)問(wèn)題,就是XML的序列化問(wèn)題:

       

      三十一、xml序列化需要用到的類

            

      三十二、序列化person對(duì)象

        

      三十三、序列化成功

        

      三十四、序列化list集合,注意變化的地方

        

      三十五、list序列化成功

      這樣我們通過(guò)xml序列化可以非常方便的把一個(gè)對(duì)象直接寫(xiě)成個(gè)xml文件。

      反序列化變成了xmlSer.Deserialize();

         現(xiàn)在講講剛才我們提出的問(wèn)題,為什么需要傳遞typeof(List<Person>)。我們拿到對(duì)象的類型能干什么呢?

      如果一時(shí)想不出來(lái),看下下面的案例:

       

      三十六、例題

      像上面這樣寫(xiě),能寫(xiě)進(jìn)去,但是有個(gè)問(wèn)題,如果我再寫(xiě)幾個(gè)對(duì)象進(jìn)去,屬性這塊能不能動(dòng)態(tài)的獲取呢?參考下系統(tǒng)給我們提供的方法,反射,通過(guò)類型獲取成員。xml序列化就是通過(guò)反射來(lái)完成的。

      自己思考下怎么自己寫(xiě)xml序列化:(小提示)

       

      三十七、小提示

      在xml序列化里面還有一個(gè)特性:

       

      三十八、[XmlIgnreAttribute]特性

      接下來(lái)我們看下關(guān)于深拷貝、淺拷貝的問(wèn)題:

      這個(gè)問(wèn)題在面試的時(shí)候也是時(shí)有出現(xiàn)的。我們大家得知道什么是深拷貝、淺拷貝,以及讓我們?nèi)プ龅脑捲趺慈?shí)現(xiàn)。

      我寫(xiě)一段代碼,大家觀察。

       

      三十九、從案例中明白什么是深拷貝,什么是淺拷貝

      下面看如何實(shí)現(xiàn)深拷貝、淺拷貝。

       

      四十、淺拷貝是它父類的方法

       測(cè)驗(yàn)一下:

           

                       

      四十一、p1和p2棧地址堆地址不一樣

       

      四十二、表示淺拷貝對(duì)于引用類型確實(shí)指向同一塊內(nèi)存

       

      四十三、實(shí)現(xiàn)淺拷貝的代碼

       

      四十四、深拷貝的測(cè)驗(yàn)

       

      四十五、深拷貝代碼

       

      四十六、淺拷貝,深拷貝圖解

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過(guò)難過(guò)
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門(mén)評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)