讀寫(xiě)XML文件的內(nèi)容并將其顯示在ListView控件上的方法
XML文件由內(nèi)容和標(biāo)記組成。通過(guò)標(biāo)記包圍內(nèi)容的方式將大部門(mén)內(nèi)容包含在元素中[1]。XML的節(jié)點(diǎn)便于程序配置進(jìn)行靈活的擴(kuò)展,特別是存在以數(shù)組格式的配置信息時(shí),增加行或列只需要修改XML文件而無(wú)需修改源代碼。
1. XML文件介紹
(1)聲明
XML 文檔的第一行可以是一個(gè) XML 聲明[1]這是文件的可選部分,它將文件識(shí)別為 XML 文件,有助于工具和人類(lèi)識(shí)別 XML(不會(huì)誤認(rèn)為是 SGML 或其他標(biāo)記)。可以將這個(gè)聲明簡(jiǎn)單地寫(xiě)成 <?xml?>,或包含 XML 版本<?xml version="1.0"?>,甚至包含字符編碼,比如針對(duì) Unicode 的 <?xml version="1.0" encoding="utf-8"?>。
(2)根節(jié)點(diǎn)創(chuàng)建
根節(jié)點(diǎn)的開(kāi)始和結(jié)束標(biāo)記用于包圍 XML 文檔的內(nèi)容。一個(gè)文件只能有一個(gè)根節(jié)點(diǎn),并且需要使用 “包裝器” 包含它[1]。
(3)子節(jié)點(diǎn)
字節(jié)點(diǎn)的開(kāi)辟就沒(méi)有數(shù)量限制了,而且子節(jié)點(diǎn)內(nèi)也可以嵌套子節(jié)點(diǎn)。最小的節(jié)點(diǎn)就是被標(biāo)記的內(nèi)容。
<?xml version="1.0" encoding="utf-8"?> <UIList> <column> <colname> <colvalue>55</colvalue> </colname> <colname> <colvalue>85</colvalue> </colname> </column> <row> <rowvalue> <columnvalue>1</columnvalue> <columnvalue>9</columnvalue> </rowvalue> <rowvalue> <columnvalue>2</columnvalue> <columnvalue>9</columnvalue> </rowvalue> </row> </UIList>
2. 讀取XML文件的內(nèi)容并將其顯示在ListView控件上
XML文件讀取的邏輯是從根節(jié)點(diǎn)出發(fā),根據(jù)標(biāo)記找到標(biāo)記數(shù)組,然后遍歷標(biāo)記數(shù)組,將對(duì)應(yīng)值讀取出來(lái)。為了讓現(xiàn)實(shí)結(jié)果更加直觀,就將結(jié)果顯示在上一篇文章提到的ListView控件上。
(1)最開(kāi)始的一步是導(dǎo)入命名空間。該命名空間內(nèi)有XML類(lèi),通過(guò)該類(lèi)方法能夠?qū)崿F(xiàn)XML文件的讀取。
using System.Xml;
(2)加載xml文件
XmlDocument doc = new XmlDocument();
doc.Load("UIConfig.xml"); //加載Xml文件
(3)獲取根節(jié)點(diǎn)
XmlElement rootElem = doc.DocumentElement;
(4)獲取節(jié)點(diǎn)數(shù)組
節(jié)點(diǎn)數(shù)組是以根節(jié)點(diǎn)為基礎(chǔ)的,在根節(jié)點(diǎn)中根據(jù)標(biāo)記將其內(nèi)容打入數(shù)組。
XmlNodeList ColumnpersonNodes = rootElem.GetElementsByTagName("colname");
(5)遍歷節(jié)點(diǎn)數(shù)組并將值顯示在ListView上
private void Form1_Load(object sender, EventArgs e) { //ListView listView1.View = View.Details; //XML //加載xml文件 XmlDocument doc = new XmlDocument(); doc.Load("UIConfig.xml"); //加載Xml文件 XmlElement rootElem = doc.DocumentElement; //獲取根節(jié)點(diǎn) XmlNodeList ColumnpersonNodes = rootElem.GetElementsByTagName("colname"); //獲取列節(jié)點(diǎn)數(shù)組 foreach (XmlNode node in ColumnpersonNodes) { //將列數(shù)據(jù)寫(xiě)入到ListView中 XmlNodeList subNodes = ((XmlElement)node).GetElementsByTagName("colvalue"); foreach (XmlNode subNode in subNodes) { //將行數(shù)據(jù)寫(xiě)入到ListView中 string strWidth = subNode.InnerText; int Width = Convert.ToInt32(strWidth); listView1.Columns.Add(strWidth, Width, HorizontalAlignment.Center); } } XmlNodeList RowpersonNodes = rootElem.GetElementsByTagName("rowvalue"); //獲取行節(jié)點(diǎn)數(shù)組 foreach (XmlNode node in RowpersonNodes) { ListViewItem lvi = new ListViewItem();//開(kāi)辟行數(shù)據(jù)空間 XmlNodeList subNodes = ((XmlElement)node).GetElementsByTagName("columnvalue"); lvi.SubItems[0].Text = subNodes[0].InnerText;//將第一個(gè)值給行頭 int Count = subNodes.Count; for (int i = 1; i < Count; i++)//遍歷第一個(gè)值之外的值 { //將行數(shù)據(jù)寫(xiě)入到ListView中 string str = subNodes[i].InnerText; lvi.SubItems.Add(str); } listView1.Items.Add(lvi); } }
3. 寫(xiě)入XML文件
XML文件的寫(xiě)入和讀取的邏輯一樣,從根節(jié)點(diǎn)出發(fā),根據(jù)標(biāo)記找到標(biāo)記數(shù)組,然后遍歷標(biāo)記數(shù)組,修改對(duì)應(yīng)的值,最后保存。
給Form1添加關(guān)閉事件,在該事件中實(shí)現(xiàn)XML的修改。
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { XmlDocument doc = new XmlDocument(); doc.Load("UIConfig.xml"); //加載Xml文件 //得到listview現(xiàn)有的列尺寸 XmlElement rootElem = doc.DocumentElement; //獲取根節(jié)點(diǎn) XmlNodeList ColumnpersonNodes = rootElem.GetElementsByTagName("colvalue"); //獲取person子節(jié)點(diǎn)集合 for(int i = 0; i < this.listView1.Columns.Count; i++) { //將現(xiàn)有的列尺寸寫(xiě)入xml文件 int colWidth = this.listView1.Columns[i].Width;//每一列的實(shí)際寬度 //將列數(shù)據(jù)寫(xiě)入到ListView中 ColumnpersonNodes[i].InnerText = colWidth.ToString(); doc.Save("UIConfig.xml"); } }
以上這篇讀寫(xiě)XML文件的內(nèi)容并將其顯示在ListView控件上的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C#實(shí)現(xiàn)自動(dòng)識(shí)別URL網(wǎng)址的方法
這篇文章主要介紹了C#實(shí)現(xiàn)自動(dòng)識(shí)別URL網(wǎng)址的方法,涉及C#操作URL地址的相關(guān)技巧,需要的朋友可以參考下2015-05-05通過(guò)App.xaml理解wpf中的Application類(lèi)
這篇文章主要介紹了通過(guò)App.xaml理解wpf中的Application類(lèi),幫助大家更好的理解和學(xué)習(xí)使用c# wpf,感興趣的朋友可以了解下2021-04-04C#調(diào)用WinRar執(zhí)行rar、zip壓縮的方法
這篇文章主要介紹了C#調(diào)用WinRar執(zhí)行rar、zip壓縮的方法,涉及C#針對(duì)winrar的判斷與調(diào)用技巧,需要的朋友可以參考下2015-05-05c# 接口interface基礎(chǔ)入門(mén)小例子
用于描述類(lèi)的功能,類(lèi)似于契約,指示了類(lèi)將:執(zhí)行的工作,形參類(lèi)型,返回結(jié)果類(lèi)型,但本身沒(méi)有執(zhí)行的代碼2013-04-04C#實(shí)現(xiàn)較為實(shí)用的SQLhelper
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)較為實(shí)用SQLhelper的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10