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);

xml文件怎么打开

///读取节点名称

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文件使用第一个,复杂点使用第二个,可根据需要选择。

从简到复,用来即用

声明:无法下载联系客服Q:5664729声明:以上内容(如有图片或视频亦包括在内)为自媒体平台用户上传并发布,不构成投资建议请自行甄别,本网站不拥有所有权,也不承担相关法律责任。如果您发现有涉嫌版权的内容,请联系我们删除。!