【XML】文件的基本讀寫

本文中主要列舉了C#中對XML文件的基本讀寫方法,僅供參考。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;

namespace PCS
{
    struct stcXmlInfo
    {
        public string strName;
        public string strMin;
        public string strMax;
        public string strInit;
    }

    class CDealXmlWL
    {
        public static CDealXmlWL dealWL;

        public CDealXmlWL()
        {
            dealWL = this;
        }

        string _strXmlPath;

        //【XML】讀操作;
        public void ReadXml(string strXmlPath)
        {
            _strXmlPath = strXmlPath;

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(_strXmlPath);
            XmlNodeList nodeChilds = xmlDoc.SelectSingleNode("WLSettings").ChildNodes;

            CDealXmlWL.dealWL.PSV = LoadXmlWLOne(nodeChilds[0]);
            CDealXmlWL.dealWL.PSA = LoadXmlWLOne(nodeChilds[1]);
        }

	//【XML】寫操作;
        public void WriteXml()
        {
            XmlDocument xmlDoc = new XmlDocument();
            //創建XML的聲明;
            XmlDeclaration xmlDec;
            xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "gb2312", null);
            xmlDoc.AppendChild(xmlDec);
            //創建XML的一個節點;
            XmlElement eleRoot = xmlDoc.CreateElement("", "WLSettings", "");
            xmlDoc.AppendChild(eleRoot);
            //選定剛創建的根節點;
            XmlNode nodeRoot = xmlDoc.SelectSingleNode("WLSettings");
            //創建子節點;
            dealOneXmlElement(xmlDoc, nodeRoot, PSV.strName, PSV.strMin, PSV.strMax, PSV.strInit);
            dealOneXmlElement(xmlDoc, nodeRoot, PSA.strName, PSA.strMin, PSA.strMax, PSA.strInit);


            //保存新生成的XML文件;
            FileStream fileStream = new FileStream(_strXmlPath, FileMode.Create, FileAccess.Write);
            xmlDoc.Save(fileStream);
            fileStream.Dispose();
        }

        //拷貝一個【XML】中的某一節點到另一個【XML】文件中;
        private void copyNode()
        {
            //【源】從要拷貝的源文件【xmlDocOut】中確定要拷貝的節點【xmlNode】;
            XmlDocument xmlDocOut = new XmlDocument();
            xmlDocOut.Load("D:\\GWei\\練習\\C#\\xmlTest\\xmlTest\\gw2.xml");
            XmlNode xmlNew = xmlDocOut.SelectSingleNode("/LogTool");

            //【目標】從【xmlDocOut】中拷貝某節點內容到【xmlDoc】的指定節點中;
            XmlDocument xmlDoc = new XmlDocument();
            //創建XML的聲明;
            XmlDeclaration xmlDec;
            xmlDec = xmlDoc.CreateXmlDeclaration("1.0", "gb2312", null);
            xmlDoc.AppendChild(xmlDec);
            //創建XML的一個節點;
            XmlElement eleRoot = xmlDoc.CreateElement("", "WLSettings", "");
            xmlDoc.AppendChild(eleRoot);
            //選定剛創建的根節點;
            XmlNode nodeRoot = xmlDoc.SelectSingleNode("WLSettings");
            //插入新節點;
            XmlNode xmlNode = xmlDoc.ImportNode(xmlNew, true);
            nodeRoot.AppendChild(xmlNode);
        }

        private void dealOneXmlElement(XmlDocument xmlDoc, XmlNode nodeRoot,
                                        string strName, string strMin, string strMax, string strInit)
        {
            //創建子節點;
            XmlElement xmlEle = xmlDoc.CreateElement("WLSetting");
            xmlEle.SetAttribute("Name", strName);
            xmlEle.SetAttribute("Min", strMin);
            xmlEle.SetAttribute("Max", strMax);
            xmlEle.SetAttribute("Init", strInit);
            nodeRoot.AppendChild(xmlEle);
        }

        private stcXmlInfo LoadXmlWLOne(XmlNode xmlNodeIn)
        {
            stcXmlInfo stcTmp = new stcXmlInfo();
            stcTmp.strName = xmlNodeIn.Attributes[0].InnerText;
            stcTmp.strMin = xmlNodeIn.Attributes[1].InnerText;
            stcTmp.strMax = xmlNodeIn.Attributes[2].InnerText;
            stcTmp.strInit = xmlNodeIn.Attributes[3].InnerText;
            return stcTmp;
        }

        stcXmlInfo psv = new stcXmlInfo();
        public stcXmlInfo PSV   //安全電壓;
        {
            set { psv = value; }
            get { return psv; }
        }
	stcXmlInfo psa = new stcXmlInfo();
        public stcXmlInfo PSA   //安全電流;
        {
            set { psa = value; }
            get { return psa; }
        }
        
    }
}

操作的【XML】文件內容如下:

<?xml version="1.0" encoding="gb2312"?>
<WLSettings>
  <WLSetting Name="PS Volt Setting" Min="20" Max="60" Init="23" />
  <WLSetting Name="PS ma Setting" Min="100" Max="180" Init="150" />
</WLSettings>

發佈了19 篇原創文章 · 獲贊 13 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章