會員登入 新朋友?立刻註冊
[說明]
文章會慢慢移新精讚 //n.sfs.tw
2019/2/23 星期六     [文章分類及列表]
精讚Blog logo 部落格是自己寫爽的
精讚部落 > 後端程設 > C# 寫法
C# 中XML的讀取與寫入 無次要群組 列印 推薦
作者或來源 瘦河馬 2009-10-10 15:56:48
關鍵字 1xml 2c#
此文完整連結 http://n.zipko.info/137.html
文章歡迎轉載,請尊重版權註明連結來源。

C# XML 的寫法

寫入:

XmlTextWriter XTW = new XmlTextWriter("user.xml", Encoding.UTF8);
XTW.WriteStartDocument();

XTW.WriteStartElement("AllUsers");
XTW.WriteStartElement("User");
XTW.WriteAttributeString("RFID", "123456789");
XTW.WriteElementString("USER_IP", "192.168.0.1");
XTW.WriteElementString("Description", " 這是描述");
XTW.WriteEndElement();
XTW.WriteEndElement();
XTW.Flush();     //寫這行才會寫入檔案
XTW.Close();


//這是輸出結果:
<?xml version="1.0" encoding="utf-8"?><AllUsers><User RFID="123456789"><USER_IP>192.168.0.1</USER_IP><Description> 這是描述</Description></User></AllUsers>




讀取:
//如果要讀取,會比較麻煩一點點。
假如以下是要讀取的XML:
<?xml version="1.0" encoding="utf-8"?><AllUsers><User RFID="7BD8B324000007E000" USER_IP="10.200.3.1" lastDT="2008/7/27 下午 01:11:40" Description="">AAAAA</User><User RFID="61D8B324000007E000" USER_IP="" lastDT="2008/7/27 下午 10:35:23" Description="">BBBB</User><User RFID="7DD8B324000007E000" USER_IP="" lastDT="2008/7/27 下午 10:36:12" Description="" /></AllUsers>

分別要取出RFID, USER_IP, lastDT, Description, User元素的內容 值放入obj[]中再置入DataTable

//建立一個DataTable
DataTable dt = new DataTable("RF_table");
dt.Columns.Add("RFID");
dt.Columns.Add("IP");
dt.Columns.Add("lastDT");
dt.Columns.Add("Desc");
dt.Columns.Add("desFile");
object[] obj = new object[5];
DataRow Dr;

System.IO.Stream S = new System.IO.FileStream(@"user.xml", System.IO.FileMode.Open);
XmlTextReader XTR = new XmlTextReader(S);
XTR.MoveToContent();  //這裡移到<AllUsers>的位置

while ( XTR.Read())
{
         if (XTR.HasAttributes && XTR.Name == "User")
         {
                    //obj[4] = XTR.ReadString();    //此行如果放在這,因為位置已到Text的地方,所以後面屬性都讀不到
                    //XTR.MoveToFirstAttribute();   //移到第一個屬性點 
                    XTR.MoveToAttribute("RFID");    //這樣移動比較乾脆
                    obj[0] = XTR.Value;
                    XTR.MoveToAttribute("USER_IP");    //這樣移動比較乾脆
                    obj[1] = XTR.Value;
                    XTR.MoveToAttribute("lastDT");    //這樣移動比較乾脆
                    obj[2] = XTR.Value;
                    XTR.MoveToAttribute("Description");    //這樣移動比較乾脆
                    obj[3] = XTR.Value;
                    XTR.MoveToElement();    //移到元素本身
                    obj[4] = XTR.ReadString();
                    //if (XTR.HasValue) this.textBox1.AppendText("hasValue\n");   //Element沒有值,所以全部是 false,所以不會印。
                    //if (XTR.IsEmptyElement) this.textBox1.AppendText("Emptylement\n");      //如果Element沒有東西 ex. <User />或<User></User>則為真
                   
                    Dr = dt.NewRow();
                    Dr.ItemArray = obj;
                   
                    dt.Rows.Add(Dr);
          }
}
//this.dataGridView1.DataSource = dt;     //可以指定給dataGridView1
XTR.Close();

END
F B 留 言 版

留言結束請重新整理網頁顯示留言
相 關 文 章
同 群 組 其 他 文 章
隨 機 文 章
精讚部落版權所有(c) JinZan Blog http://n.zipko.info Author axer@tc.edu.tw. 最佳瀏器為Firefox,本網頁不支援IE6。[文章分類及列表]
本站最佳瀏覽解析度1024x768 網站建置 2009.11