本文中主要列舉了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>