C#輕量級XML資料載入器

來源:互聯網
上載者:User

首先請原諒我實在不熟悉C#,

今天碰到個問題想使用C#從XML中解析資料,然後……太弱的我老也搞不定各種細節,

於是自己封了一個類,給自己使吧。

 

using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Xml.Linq;</p><p>namespace GDE_XMLLoader<br />{<br /> //XML解析類<br /> class XMLLoader<br /> {<br /> //構造,傳入XML檔案名稱<br /> public XMLLoader(String Filename)<br /> {<br /> m_XMLFileHandle = XElement.Load(Filename);<br /> }</p><p> //構造,傳入XMLElement<br /> public XMLLoader(XElement Instance)<br /> {<br /> m_XMLFileHandle = Instance;<br /> }</p><p> //獲得一個XML地區的控制代碼<br /> public XMLLoader GetBlock(String BlockName)<br /> {<br /> return new XMLLoader( m_XMLFileHandle.DescendantsAndSelf(BlockName).Single() );<br /> }</p><p> //設定擷取資料區域名及關鍵字<br /> public void SetDataKeyword(String ZoneName,String Keyword)<br /> {<br /> levelList = m_XMLFileHandle.Elements(ZoneName);<br /> m_Keyword = Keyword;<br /> m_Ptr = 0;<br /> }</p><p> //擷取計數<br /> public int GetCount()<br /> {<br /> return levelList.Count();<br /> }</p><p> //取下一個值<br /> public String GetNextValue()<br /> {<br /> String k = levelList.Single(X => X.Attribute("Code").Value == m_Ptr.ToString()).Attribute(m_Keyword).Value;<br /> m_Ptr++;<br /> return k;<br /> }</p><p> IEnumerable<XElement> levelList;<br /> private XElement m_XMLFileHandle;<br /> private String m_Keyword;<br /> private int m_Ptr;<br /> }<br />}

 

使用方法

 

XMLLoader test = new XMLLoader("test.xml");<br /> XMLLoader test2 = test.GetBlock("Test2");<br /> test2.SetDataKeyword("Foo", "Value");</p><p> for (int i = 0; i < test2.GetCount(); ++i)<br /> {<br /> MessageBox.Show(test2.GetNextValue());<br /> }

 

具體的XML檔案格式

 

<?xml version="1.0" encoding="utf-8" ?><br /><All></p><p> <Test><br /> <Item Code="0" Value="hello world" Value2="test1"><br /> <TestChild></TestChild><br /> </Item></p><p> <Item Code="1" Value="hello world2" Value2="test2"></Item><br /> </Test></p><p> <Test2><br /> <Foo Code="0" Value="Foo1"></Foo><br /> <Foo Code="1" Value="Foo2"></Foo><br /> </Test2></p><p></All>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.