對xml文檔資料的讀取

來源:互聯網
上載者:User

標籤:des   style   color   使用   os   io   檔案   資料   

在短暫的C#程式開發過程中,我發現使用xml文檔來儲存一些資料還是很不錯的!當然有了資料當然要讀取,在開發過程我遇到了兩種對xml文檔資料進行讀取的方法。

  • 就是最基本的利用System.Xml命名空間,通過各個節點來獲得xml中的資料。

例如下面的Xml資料:

<?xml version="1.0"?><BookStore>    <book>        <title>C#入門經典</title>        <author>Karli Watson</author>        <pages>888</pages>    </book>    <book>        <title>長安亂</title>        <author>韓寒</author>        <pages>260</pages>    </book>        <book>        <title>一座城池</title>        <author>韓寒</author>        <pages>300</pages>    </book>        <book>        <title>三重門</title>        <author>韓寒</author>        <pages>280</pages>    </book>        <book>        <title>紅樓夢</title>        <author>曹雪芹</author>        <pages>1200</pages>    </book>        <book>        <title>三國演義</title>        <author>羅貫中</author>        <pages>1000</pages>    </book>        <book>        <title>瘋狂的程式員</title>        <author>絕影</author>        <pages>300</pages>    </book>        <book>        <title>老人與海</title>        <author>海明威</author>        <pages>190</pages>    </book></BookStore>

 

 

將這個xml文檔儲存在案頭上,檔案名稱為:“BookStore.xml”,通過遞迴演算法,將每個節點全部得到,再輸出。

       static public void ReadXmlByNode()        {            XmlDocument document = new XmlDocument();            document.Load(FilePath);            XmlNode RootNode = document.DocumentElement; //得到根節點            getValue(RootNode);        }        static public void getValue(XmlNode node)        {            if (node.ChildNodes.Count == 0)            {                Console.WriteLine(node.InnerText);            }            else            {                foreach (XmlNode ChildNode in node.ChildNodes)                {                    getValue(ChildNode);                }            }        }
 

這樣就可以將xml中的資料全部輸出,但是這種方式在大批量的輸出的時候得到的資料太亂,不好操作。對於特定(指定)節點進行操作,這個方法是可以的。

  • 還有一種辦法是直接將xml文檔轉化為DataTable資料,這樣即使是大批量的資料也可以很好的組織起來,有利於後面程式對資料的操作
       static public void ReadXmlByDataSet()        {            DataSet dataset = new DataSet();            dataset.ReadXml(FilePath, XmlReadMode.Auto);            DataTable datatable = dataset.Tables[0];            foreach (DataRow row in datatable.Rows)            {                for (int i = 0; i < datatable.Columns.Count; i++)                {                    Console.WriteLine(row[i].ToString());                }            }        }

這個對於標準的xml文檔來說,是很好的一種資料讀取方式。這個方式的缺點在與當xml的節點級數變多以後,就無法將所有的資料全部讀出了。將上面的xml文檔修改一下,改成下面的這個樣子:

<?xml version="1.0"?><BookStore>    <book>        <title>C#入門經典</title>        <author>Karli Watson</author>        <pages>888</pages>    </book>    <book>        <title>長安亂</title>        <author>韓寒</author>            <age>30</age>            <sex>男</sex>            <nation>漢族</nation>            <country>中國</country>        <pages>260</pages>    </book>        <book>        <title>一座城池</title>        <author>韓寒</author>        <pages>300</pages>    </book>        <book>        <title>三重門</title>        <author>韓寒</author>        <pages>280</pages>    </book>        <book>        <title>紅樓夢</title>        <author>曹雪芹</author>        <pages>1200</pages>    </book>        <book>        <title>三國演義</title>        <author>羅貫中</author>        <pages>1000</pages>    </book>        <book>        <title>瘋狂的程式員</title>        <author>絕影</author>        <pages>300</pages>    </book>        <book>        <title>老人與海</title>        <author>海明威</author>        <pages>190</pages>    </book></BookStore>

 

 

對“長安亂”中的作者節點建立了幾個子節點。仍然使用上面的dataset代碼來讀取資料,就會出現問題,但是使用第一種方法,則還是可以將全部資料正常的讀取出來。

上面這些是我對xml文檔暫時的體會,歡迎各位大神指正!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.