C# 几种阅读XML文件的方法
在开发过程中,我们有时需要保存一些本地结构化数据或配置信息,然后我们可以选择使用xml文件。当然,xml的用途不仅仅是这些。
本文介绍了几种阅读xml文件的方法;
我们有以下两个文件,一个是带id属性的简单xml文件,另一个是没有属性的。
张三
男
20
李四
女
21
张三
男
20
李四
女
21
第一种方法:读取DataSet
这种方法最简单,取数据也很方便,但是对于复杂的xml来说,操作起来也很麻烦。每个带属性的节点都会生成一个table,可以自己监控dataset的结构,然后进行不同的处理。
//xml文件路径
stringxmlPath=Application.StartupPath “Student.xml”;//没有属性
stringxmlPaths=Application.StartupPath “Students.xml”;//带属性
///dataset阅读简单的xml文件
DataSetds=newDataSet();
ds.ReadXml(xmlPath);
////读取Name节点的第一个数据
stringname=ds.Tables[0].Rows[0][“name”].ToString();
//输出:张三
Console.WriteLine(name);
////dataset阅读具有属性的xml文件
ds=newDataSet();
ds.ReadXml(xmlPaths);
///读取节点名称
stringnodeName=”name”;
name=ds.Tables[nodeName].Rows[0][nodeName “_Text”].ToString();
/////读取节点的id属性
stringid=ds.Tables[nodeName].Rows[0][“id”].ToString();
//输出:id:1,name:张三
Console.WriteLine(“id:{0},name:{1}”,id,name);
第二种:XmlDocument
这种方法非常强大和灵活,可以根据节点顺序逐步获得
//导入命名空间
usingSystem.Xml;
//XmlDocument阅读xml文件
XmlDocumentxmlDoc=newXmlDocument();
xmlDoc.Load(xmlPaths);
//获得xml根节点
XmlNodexmlRoot=xmlDoc.DocumentElement;
///按节点顺序逐步读取
///阅读第一个name节点
name=xmlRoot.SelectSingleNode(“student/name”).InnerText;
/////读取节点的id属性
id=xmlRoot.SelectSingleNode(“student/name”).Attributes[“id”].InnerText;
//输出:id:1,name:张三
Console.WriteLine(“id:{0},name:{1}”,id,name);
////读取所有name节点
foreach(XmlNodenodeinxmlRoot.SelectNodes(“student/name”))
//循环输出
Console.WriteLine(“id:{0},name:{1}”,node.Attributes[“id”].InnerText,node.InnerText);
第三种方法:JSON.NET
使用JSON.NET可以将xml转换为json进行操作
如果操作xml文件,个人不建议使用此方法;
Newtonsoft需要引入.Json.dll,使用时请注意版本,低版本可能不支持
//导入命名空间
usingNewtonsoft.Json;
usingNewtonsoft.Json.Linq;
//XmlDocument阅读xml文件
xmlDoc=newXmlDocument();
xmlDoc.Load(xmlPaths);
//转换为json
stringjson=JsonConvert.SerializeXmlNode(xmlDoc);
//分析json
JObjectjobj=JObject.Parse(json);
JArrayjarr=JArray.Parse(jobj[“studentList”][“student”].ToString());
//输出:id:1,name:张三
Console.WriteLine(“id:{0},name:{1}”,jarr[0][“name”][“#text”],jarr[0][“name”][“@id”]);
个人推荐简单xml文件使用第一个,复杂点使用第二个,可根据需要选择。
从简到复,用来即用
常见问题FAQ
- UU学院资源教程能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 付款了无法下载怎么办?
- 链接地址失效怎么办?