雷火电竞-中国电竞赛事及体育赛事平台

歡迎來(lái)到入門教程網(wǎng)!

C#教程

當(dāng)前位置:主頁(yè) > 軟件編程 > C#教程 >

讀寫XML文件的內(nèi)容并將其顯示在ListView控件上的方法

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C#教程|點(diǎn)擊:

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

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有