1. 程式人生 > 其它 >1.使用C#讀寫XML文件

1.使用C#讀寫XML文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//引用名稱空間
using System.Xml;

namespace Read_write_XML
{
    public class RWXml
    {
        //生成一個xml文件
        public void WriteXml()
        {
            //隨機數
            Random rd = new
Random(); //首先,建立xml文件 /* * 1.例項化一個xml Document類 其中一共有三個引數,都是string型別的,第一個是版本 參考<?xml version="1.0" encoding="utf-8" ?> 第一個引數為"1.0" 第二個引數為編碼方式"utf-8" 第三個引數為,必須是yes或者no 一定要寫返回型別,返回型別是XmlDeclaration型別的
*/ XmlDocument xDoc = new XmlDocument(); //建立一個宣告xml文件所需要的語法的變數 XmlDeclaration declaration = xDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes"); //下面AppendChild方法是用來將指定的節點新增到該節點的子節點列表的末尾,在xml檔案第一行後面就是末尾 xDoc.AppendChild(declaration);
//一個xml文件,必須要有一個根元素 //建立根節點students //XmlElement相當於XmlNode XmlElement elem = xDoc.CreateElement("students"); //把根節點新增到xml文件中去 xDoc.AppendChild(elem); //目前為止只有子節點,但是沒有根節點 //下面是設定student個數 for (int i = 1; i <= 10; i++) { //下面開始新增子節點,放在根節點的下面,提示,xDoc是xml文件 XmlElement elem1 = xDoc.CreateElement("student");//把子節點放到根節點elem的下面去 //將第一級的子節點,放置到根節點的下面去 elem.AppendChild(elem1); //下面就是新增屬性,屬性就是student裡面的東西了,例如名字性別等等 elem1.SetAttribute("姓名", "張三"); elem1.SetAttribute("學號", rd.Next(10000,99999).ToString()); //新增第三級的節點 //新增子節點的子節點 XmlElement elem1_1 = xDoc.CreateElement("語文成績"); elem1.AppendChild(elem1_1); //增加節點中的資料 elem1_1.InnerText = rd.Next(60, 100).ToString(); XmlElement elem1_2 = xDoc.CreateElement("數學成績"); elem1.AppendChild(elem1_2); elem1_2.InnerText = rd.Next(60, 100).ToString(); XmlElement elem1_3 = xDoc.CreateElement("外語成績"); elem1.AppendChild(elem1_3); elem1_3.InnerText = rd.Next(60, 100).ToString(); } xDoc.Save("students.xml");//將xml文件儲存在指定的檔案 } //下面是讀取Xml文件的 public void ReadXml() { //首先,建立xml文件 /* * 1.例項化一個xml Document物件*/ XmlDocument xDoc = new XmlDocument(); //2.載入xml檔案 xDoc.Load("students.xml"); //第一步要獲取根節點students XmlNode node = xDoc.SelectSingleNode("students"); XmlNodeList nodeList = node.ChildNodes; foreach(XmlNode xn in nodeList) { //string name = xn.Name;//這裡僅僅是結點的名字,但不是節點的屬性,我們想看到節點的屬性 //型別顯示轉換 XmlElement xmle = (XmlElement)xn; string name = xmle.GetAttribute("姓名"); string no = xmle.GetAttribute("學號"); //先輸出姓名和學號資訊 Console.WriteLine(name + ":" + no); XmlNodeList childList = xn.ChildNodes; foreach(XmlNode n in childList)//這裡迴圈的是第三級節點,也就是成績的節點 { //型別轉換 XmlElement xe = (XmlElement)n; string className = xe.Name; string score = xe.InnerText;//InnerText是獲取或者設定值 //再輸出成績資訊 Console.WriteLine(className + ":" + score); //如果想修改可以進行以下的操作 //使用if語句對某一個進行更改 if (no== "63729") xe.InnerText = "100"; } } //生成或者修改xml文件,末尾一定要寫save方法 xDoc.Save("students.xml"); Console.ReadKey(); } } }
using System;
using System.Xml;

namespace Read_write_XML
{
    class Program
    {
        static void Main(string[] args)
        {
            RWXml xml = new RWXml();
            xml.ReadXml();
        }
    }
}