**C#读xml配置文件与忽视注释部分**。
**方法一:**
string filepath =@"\\Xml.config";
if (File.Exists(filepath))
{
**XmlDocument xmlDoc = new XmlDocument();
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;**
**XmlReader reader = XmlReader.Create(filepath, settings);**
xmlDoc.Load(reader);
XmlNodeList nodeList = xmlDoc.SelectSingleNode("xxx").ChildNodes;
foreach (XmlNode xe in nodeList)
{
XmlElement xeElement = (XmlElement)xe;
XmlNode node = xe.SelectSingleNode("xxx");
string str = node.InnerText;
}
}
**方法二:**
string path = "mxml.xml";
//对象,加载文件。
XDocument xdoc = XDocument.Load(path);
// Console.WriteLine(xdoc.Root);//获取根元素。
**XElement xele = xdoc.Root;//根元素。**
//获取根元素下的所有子元素。
**IEnumerable<XElement> eles = xele.Elements();**
foreach (XElement eleClass in eles)
{
//获取根元素下的子元素的名字。
// Console.Write(eleClass.Name);
foreach (XElement itemStudent in **eleClass.Elements()**)
{
Console.WriteLine(itemStudent.Attribute("id").Value);
Console.WriteLine(itemStudent.Element("name").Value);
Console.WriteLine(itemStudent.Element("gender").Value);
Console.WriteLine(itemStudent.Element("age").Value);
}
}
附上:xml配置文件

方法三:
1)、配置文件:

2)、Skill类
class Skill
{
public int Id { get; set; }
public string Name { get; set; }
public string Lang { get; set; }
public int damage { get; set; }
public override string ToString()
{
return **string.Format**("Id:{0},Name:{1},Lang:{2},Damage:{3}", Id, Name, Lang, damage);
}
}
3)、读取:
class Program
{
static void Main(string[] args)
{
**List<Skill> skillLilst = new List<Skill>();**//创建技能信息集合,用来存储所有的技能信息
**XmlDocument** xmlDoc = new XmlDocument();
xmlDoc.**Load**("Skill.txt");
**XmlNode** skillNode = xmlDoc.**FirstChild**;//**获取根结点(XmlNode用来代表一个结点)**。
**XmlNodeList** skillNodeList = skillNode.**ChildNodes**;//**获取根结点下所有子节点的集合。**
foreach (**XmlNode** item in skillNodeList)
{
**XmlNodeList** childNodeList= item.**ChildNodes**;/**/获取当前结点下面所有的子节点**.
**Skill skill = new Skill();**
foreach (**XmlNode** item1 in childNodeList)
{
if (item1.Name=="id")
{
int id=Int32.Parse(item1.**InnerText**);//**InnerText用来获取结点内部的文本。**
skill.Id = id;
}
else if(item1.Name == "name")
{
string str = item1.**InnerText**;
skill.Name = str;
skill.Lang = item1.**Attributes**[0].Value;
}
else
{
skill.damage = Int32.Parse(item1.InnerText);
}
}
skillLilst.Add(skill);
}
foreach (Skill item2 in skillLilst)
{
Console.WriteLine(item2);
}
Console.ReadKey();
}
}
4)、运行结果: