LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 读取XML文件的几种方式

admin
2023年2月27日 10:21 本文热度 299

在开发过程中,我们有时会需要保存到本地一些结构化数据或者配置信息,这时就可以选择用xml文件。当然xml的用途也不仅仅是这些。

这一篇来谈一谈关于读取xml文件的几种方式;

我们有以下两个文件,一个是带有id属性的,一个是不带属性的简单xml文件。

<?xml version="1.0" encoding="utf-8" ?><studentList>  <student>    <name>张三</name>    <sex></sex>    <old>20</old>  </student>  <student>    <name>李四</name>    <sex></sex>    <old>21</old>  </student></studentList>
<?xml version="1.0" encoding="utf-8" ?><studentList>  <student>    <name id="1">张三</name>    <sex id="11"></sex>    <old id="111">20</old>  </student>  <student>    <name id="2">李四</name>    <sex id="22"></sex>    <old id="222">21</old>  </student></studentList>

第一种方式:DataSet读取

这种方式最简单,而且取数据也很方便,但是对于比较复杂的xml,操作起来也很麻烦,每一个带属性的节点都会生成一个table,可以自行监视下DataSet的结构情况,然后做不同的处理

 //xml文件路径 string xmlPath = Application.StartupPath + "\\Student.xml";//不带属性 string xmlPaths = Application.StartupPath + "\\Students.xml";//带属性 //dataset读取简单xml文件 DataSet ds = new DataSet(); ds.ReadXml(xmlPath);//读取第一条数据的name节点 string name = ds.Tables[0].Rows[0]["name"].ToString(); //输出:张三 Console.WriteLine(name);

//dataset读取带属性的xml文件 ds = new DataSet(); ds.ReadXml(xmlPaths); //读取的节点名称 string nodeName = "name"; name = ds.Tables[nodeName].Rows[0][nodeName+"_Text"].ToString(); //读取节点的id属性 string id = ds.Tables[nodeName].Rows[0]["id"].ToString(); //输出:id:1,name:张三 Console.WriteLine("id:{0},name:{1}",id,name);


第二种方式:XmlDocument

这种方式就很强大并且灵活了,根据节点顺序逐步获取就可以

//需导入命名空间 using System.Xml;
//XmlDocument读取xml文件 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlPaths); //获取xml根节点 XmlNode xmlRoot = 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 (XmlNode node in xmlRoot.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,使用时请注意版本,低版本可能不支持

//需导入命名空间 using Newtonsoft.Json;using Newtonsoft.Json.Linq;
//XmlDocument读取xml文件 xmlDoc = new XmlDocument(); xmlDoc.Load(xmlPaths); //转换为json string json = JsonConvert.SerializeXmlNode(xmlDoc); //解析json JObject jobj = JObject.Parse(json); JArray jarr = JArray.Parse(jobj["studentList"]["student"].ToString()); //输出:id:1,name:张三 Console.WriteLine("id:{0},name:{1}", jarr[0]["name"]["#text"], jarr[0]["name"]["@id"]);

简单的xml文件个人推荐使用第一种,复杂点的使用第二种,具体可以根据需求选择。


该文章在 2023/2/27 10:21:58 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved