狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 讀取XML文件的幾種方式

admin
2023年2月27日 10:21 本文熱度 1235

在開(kāi)發(fā)過(guò)程中,我們有時(shí)會(huì)需要保存到本地一些結(jié)構(gòu)化數(shù)據(jù)或者配置信息,這時(shí)就可以選擇用xml文件。當(dāng)然xml的用途也不僅僅是這些。

這一篇來(lái)談一談關(guān)于讀取xml文件的幾種方式;

我們有以下兩個(gè)文件,一個(gè)是帶有id屬性的,一個(gè)是不帶屬性的簡(jiǎn)單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讀取

這種方式最簡(jiǎn)單,而且取數(shù)據(jù)也很方便,但是對(duì)于比較復(fù)雜的xml,操作起來(lái)也很麻煩,每一個(gè)帶屬性的節(jié)點(diǎn)都會(huì)生成一個(gè)table,可以自行監(jiān)視下DataSet的結(jié)構(gòu)情況,然后做不同的處理

 //xml文件路徑 string xmlPath = Application.StartupPath + "\\Student.xml";//不帶屬性 string xmlPaths = Application.StartupPath + "\\Students.xml";//帶屬性 //dataset讀取簡(jiǎn)單xml文件 DataSet ds = new DataSet(); ds.ReadXml(xmlPath);//讀取第一條數(shù)據(jù)的name節(jié)點(diǎn) string name = ds.Tables[0].Rows[0]["name"].ToString(); //輸出:張三 Console.WriteLine(name);

//dataset讀取帶屬性的xml文件 ds = new DataSet(); ds.ReadXml(xmlPaths); //讀取的節(jié)點(diǎn)名稱(chēng) string nodeName = "name"; name = ds.Tables[nodeName].Rows[0][nodeName+"_Text"].ToString(); //讀取節(jié)點(diǎn)的id屬性 string id = ds.Tables[nodeName].Rows[0]["id"].ToString(); //輸出:id:1,name:張三 Console.WriteLine("id:{0},name:{1}",id,name);


第二種方式:XmlDocument

這種方式就很強(qiáng)大并且靈活了,根據(jù)節(jié)點(diǎn)順序逐步獲取就可以

//需導(dǎo)入命名空間 using System.Xml;
//XmlDocument讀取xml文件 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlPaths); //獲取xml根節(jié)點(diǎn) XmlNode xmlRoot = xmlDoc.DocumentElement; //根據(jù)節(jié)點(diǎn)順序逐步讀取 //讀取第一個(gè)name節(jié)點(diǎn) name = xmlRoot.selectSingleNode("student/name").InnerText; //讀取節(jié)點(diǎn)的id屬性 id = xmlRoot.selectSingleNode("student/name").Attributes["id"].InnerText; //輸出:id:1,name:張三 Console.WriteLine("id:{0},name:{1}", id, name);
//讀取所有的name節(jié)點(diǎn) foreach (XmlNode node in xmlRoot.selectNodes("student/name")) { //循環(huán)輸出 Console.WriteLine("id:{0},name:{1}", node.Attributes["id"].InnerText, node.InnerText); }

第三種方式:JSON.NET

使用JSON.NET可以將xml轉(zhuǎn)換成json去操作

如果是對(duì)xml文件進(jìn)行操作的話,個(gè)人不太建議使用這種方式;

需要引入Newtonsoft.Json.dll,使用時(shí)請(qǐng)注意版本,低版本可能不支持

//需導(dǎo)入命名空間 using Newtonsoft.Json;using Newtonsoft.Json.Linq;
//XmlDocument讀取xml文件 xmlDoc = new XmlDocument(); xmlDoc.Load(xmlPaths); //轉(zhuǎn)換為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"]);

簡(jiǎn)單的xml文件個(gè)人推薦使用第一種,復(fù)雜點(diǎn)的使用第二種,具體可以根據(jù)需求選擇。


該文章在 2023/2/27 10:21:58 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved