讀寫XML文件的內(nèi)容并將其顯示在ListView控件上的方法
XML文件由內(nèi)容和標(biāo)記組成。通過(guò)標(biāo)記包圍內(nèi)容的方式將大部門內(nèi)容包含在元素中[1]。XML的節(jié)點(diǎn)便于程序配置進(jìn)行靈活的擴(kuò)展,特別是存在以數(shù)組格式的配置信息時(shí),增加行或列只需要修改XML文件而無(wú)需修改源代碼。
1. XML文件介紹
(1)聲明
XML 文檔的第一行可以是一個(gè) XML 聲明[1]這是文件的可選部分,它將文件識(shí)別為 XML 文件,有助于工具和人類識(shí)別 XML(不會(huì)誤認(rèn)為是 SGML 或其他標(biāo)記)??梢詫⑦@個(gè)聲明簡(jiǎn)單地寫成 <?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類,通過(guò)該類方法能夠?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ù)寫入到ListView中
XmlNodeList subNodes = ((XmlElement)node).GetElementsByTagName("colvalue");
foreach (XmlNode subNode in subNodes)
{
//將行數(shù)據(jù)寫入到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ù)寫入到ListView中
string str = subNodes[i].InnerText;
lvi.SubItems.Add(str);
}
listView1.Items.Add(lvi);
}
}
3. 寫入XML文件
XML文件的寫入和讀取的邏輯一樣,從根節(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)有的列尺寸寫入xml文件
int colWidth = this.listView1.Columns[i].Width;//每一列的實(shí)際寬度
//將列數(shù)據(jù)寫入到ListView中
ColumnpersonNodes[i].InnerText = colWidth.ToString();
doc.Save("UIConfig.xml");
}
}
以上這篇讀寫XML文件的內(nèi)容并將其顯示在ListView控件上的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持我們。
上一篇:C# 對(duì)象持久化詳解
欄 目:C#教程
下一篇:.NET/C#實(shí)現(xiàn)識(shí)別用戶訪問(wèn)設(shè)備的方法
本文標(biāo)題:讀寫XML文件的內(nèi)容并將其顯示在ListView控件上的方法
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/5923.html
您可能感興趣的文章
- 01-10C#實(shí)現(xiàn)多線程下載文件的方法
- 01-10C#文件斷點(diǎn)續(xù)傳實(shí)現(xiàn)方法
- 01-10C#實(shí)現(xiàn)多線程寫入同一個(gè)文件的方法
- 01-10C#編程獲取資源文件中圖片的方法
- 01-10C#實(shí)現(xiàn)讀取被進(jìn)程占用的文件實(shí)現(xiàn)方法
- 01-10asp.net中XML如何做增刪改查操作
- 01-10C#刪除只讀文件或文件夾(解決File.Delete無(wú)法刪除文件)
- 01-10C# readnodefile()不能讀取帶有文件名為漢字的osg文件解決方法
- 01-10C#路徑,文件,目錄及IO常見(jiàn)操作匯總
- 01-10winform實(shí)現(xiàn)拖動(dòng)文件到窗體上的方法


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-11Mac OSX 打開(kāi)原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)


