首先请原谅我实在不熟悉C#, 今天碰到个问题想使用C#从XML中解析数据,然后……太弱的我老也搞不定各种细节, 于是自己封了一个类,给自己使吧。 using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; namespace GDE_XMLLoader { //XML解析类 class XMLLoader { //构造,传入XML文件名 public XMLLoader(String Filename) { m_XMLFileHandle = XElement.Load(Filename); } //构造,传入XMLElement public XMLLoader(XElement Instance) { m_XMLFileHandle = Instance; } //获得一个XML区域的句柄 public XMLLoader GetBlock(String BlockName) { return new XMLLoader( m_XMLFileHandle.DescendantsAndSelf(BlockName).Single() ); } //设置获取数据区域名及关键字 public void SetDataKeyword(String ZoneName,String Keyword) { levelList = m_XMLFileHandle.Elements(ZoneName); m_Keyword = Keyword; m_Ptr = 0; } //获取计数 public int GetCount() { return levelList.Count(); } //取下一个值 public String GetNextValue() { String k = levelList.Single(X => X.Attribute("Code").Value == m_Ptr.ToString()).Attribute(m_Keyword).Value; m_Ptr++; return k; } IEnumerable<XElement> levelList; private XElement m_XMLFileHandle; private String m_Keyword; private int m_Ptr; } } 使用方法 XMLLoader test = new XMLLoader("test.xml"); XMLLoader test2 = test.GetBlock("Test2"); test2.SetDataKeyword("Foo", "Value"); for (int i = 0; i < test2.GetCount(); ++i) { MessageBox.Show(test2.GetNextValue()); } 具体的XML文件格式 <?xml version="1.0" encoding="utf-8" ?> <All> <Test> <Item Code="0" Value="hello world" Value2="test1"> <TestChild></TestChild> </Item> <Item Code="1" Value="hello world2" Value2="test2"></Item> </Test> <Test2> <Foo Code="0" Value="Foo1"></Foo> <Foo Code="1" Value="Foo2"></Foo> </Test2> </All>