讀寫XML文件的內(nèi)容并將其顯示在ListView控件上的方法
XML文件由內(nèi)容和標記組成。通過標記包圍內(nèi)容的方式將大部門內(nèi)容包含在元素中[1]。XML的節(jié)點便于程序配置進行靈活的擴展,特別是存在以數(shù)組格式的配置信息時,增加行或列只需要修改XML文件而無需修改源代碼。
1. XML文件介紹
(1)聲明
XML 文檔的第一行可以是一個 XML 聲明[1]這是文件的可選部分,它將文件識別為 XML 文件,有助于工具和人類識別 XML(不會誤認為是 SGML 或其他標記)。可以將這個聲明簡單地寫成 <?xml?>,或包含 XML 版本<?xml version="1.0"?>,甚至包含字符編碼,比如針對 Unicode 的 <?xml version="1.0" encoding="utf-8"?>。
(2)根節(jié)點創(chuàng)建
根節(jié)點的開始和結束標記用于包圍 XML 文檔的內(nèi)容。一個文件只能有一個根節(jié)點,并且需要使用 “包裝器” 包含它[1]。
(3)子節(jié)點
字節(jié)點的開辟就沒有數(shù)量限制了,而且子節(jié)點內(nèi)也可以嵌套子節(jié)點。最小的節(jié)點就是被標記的內(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é)點出發(fā),根據(jù)標記找到標記數(shù)組,然后遍歷標記數(shù)組,將對應值讀取出來。為了讓現(xiàn)實結果更加直觀,就將結果顯示在上一篇文章提到的ListView控件上。
(1)最開始的一步是導入命名空間。該命名空間內(nèi)有XML類,通過該類方法能夠?qū)崿F(xiàn)XML文件的讀取。
using System.Xml;
(2)加載xml文件
XmlDocument doc = new XmlDocument();
doc.Load("UIConfig.xml"); //加載Xml文件
(3)獲取根節(jié)點
XmlElement rootElem = doc.DocumentElement;
(4)獲取節(jié)點數(shù)組
節(jié)點數(shù)組是以根節(jié)點為基礎的,在根節(jié)點中根據(jù)標記將其內(nèi)容打入數(shù)組。
XmlNodeList ColumnpersonNodes = rootElem.GetElementsByTagName("colname");
(5)遍歷節(jié)點數(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é)點 XmlNodeList ColumnpersonNodes = rootElem.GetElementsByTagName("colname"); //獲取列節(jié)點數(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é)點數(shù)組 foreach (XmlNode node in RowpersonNodes) { ListViewItem lvi = new ListViewItem();//開辟行數(shù)據(jù)空間 XmlNodeList subNodes = ((XmlElement)node).GetElementsByTagName("columnvalue"); lvi.SubItems[0].Text = subNodes[0].InnerText;//將第一個值給行頭 int Count = subNodes.Count; for (int i = 1; i < Count; i++)//遍歷第一個值之外的值 { //將行數(shù)據(jù)寫入到ListView中 string str = subNodes[i].InnerText; lvi.SubItems.Add(str); } listView1.Items.Add(lvi); } }
3. 寫入XML文件
XML文件的寫入和讀取的邏輯一樣,從根節(jié)點出發(fā),根據(jù)標記找到標記數(shù)組,然后遍歷標記數(shù)組,修改對應的值,最后保存。
給Form1添加關閉事件,在該事件中實現(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é)點 XmlNodeList ColumnpersonNodes = rootElem.GetElementsByTagName("colvalue"); //獲取person子節(jié)點集合 for(int i = 0; i < this.listView1.Columns.Count; i++) { //將現(xiàn)有的列尺寸寫入xml文件 int colWidth = this.listView1.Columns[i].Width;//每一列的實際寬度 //將列數(shù)據(jù)寫入到ListView中 ColumnpersonNodes[i].InnerText = colWidth.ToString(); doc.Save("UIConfig.xml"); } }
以上這篇讀寫XML文件的內(nèi)容并將其顯示在ListView控件上的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持我們。
上一篇:C# 對象持久化詳解
欄 目:C#教程
下一篇:.NET/C#實現(xiàn)識別用戶訪問設備的方法
本文標題:讀寫XML文件的內(nèi)容并將其顯示在ListView控件上的方法
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5923.html
您可能感興趣的文章
- 01-10C#實現(xiàn)多線程下載文件的方法
- 01-10C#文件斷點續(xù)傳實現(xiàn)方法
- 01-10C#實現(xiàn)多線程寫入同一個文件的方法
- 01-10C#編程獲取資源文件中圖片的方法
- 01-10C#實現(xiàn)讀取被進程占用的文件實現(xiàn)方法
- 01-10asp.net中XML如何做增刪改查操作
- 01-10C#刪除只讀文件或文件夾(解決File.Delete無法刪除文件)
- 01-10C# readnodefile()不能讀取帶有文件名為漢字的osg文件解決方法
- 01-10C#路徑,文件,目錄及IO常見操作匯總
- 01-10winform實現(xiàn)拖動文件到窗體上的方法


閱讀排行
本欄相關
- 01-10C#通過反射獲取當前工程中所有窗體并
- 01-10關于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻 器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當前操作系統(tǒng)已
隨機閱讀
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-10C#中split用法實例總結