<本篇文章使用 System.Xml 功能來讀取與更新XML檔案 (using System.Xml) >
範例程式功能 :
修改 XML 檔案中 <BinCode><![CDATA[NEW Data TEST]]></BinCode>
程式介面 :

程式碼 :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Linq;
namespace XML_Web_Study
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/* 點擊Start運行 */
private void button1_Click(object sender, EventArgs e)
{
/* 取得需更新的內容 */
string New_Input = textBox_New_Input.Text;
/* 提供xml檔案路徑與檔名 */
SavaConfig("./TEST_File.xml", New_Input);
}
public Boolean SavaConfig(string FileName,string Input)
{
try
{
/* 開黨 & 讀檔 */
XmlDocument XMLDoc = new XmlDocument();
XMLDoc.Load(FileName);
/* 獲取子節點 */
XmlNode node = XMLDoc.ChildNodes.Item(1).ChildNodes.Item(2).ChildNodes.Item(0).ChildNodes.Item(0).ChildNodes.Item(1).ChildNodes.Item(1);
/* 顯示出目前節點的資料 */
string Node_Data = node.InnerText;
/* 將結點資料顯示在TextBox上 */
textBox_Data.Text = Node_Data;
/* 更新節點資料內容 */
string sMapValue = "";
/* 更新檔案前需先清空當前的資料 */
node.InnerText = "";
/* 建立CData節點 & value = 節點資料 */
node.AppendChild(XMLDoc.CreateCDataSection(Input));
/* 儲存檔案 */
XMLDoc.Save(FileName);
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly, false);
return false;
}
}
}
}
備註: 上述程式碼中 XMLDoc.ChildNodes 獲取子結點需依照所讀取的XML階層結構來做設定.
以XML範例來說明:
ChildNodes.Item(1) 中指的就是 XML中的 <MapData>
ChildNodes.Item(2)中指的就是XML中的 <SubstrateMaps>
<< 以此類推 >>
XML檔案內容 :
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<MapData>
<Layouts>
<Layout>
<Dimension/>
<DeviceSize/>
<StepSize/>
<LowerLeft/>
<ChildLayouts>
<ChildLayout/>
</ChildLayouts>
</Layout>
<Layout>
<Dimension />
<DeviceSize />
<StepSize />
<LowerLeft />
<ChildLayouts>
<ChildLayout />
</ChildLayouts>
</Layout>
<Layout>
<Dimension />
<DeviceSize />
<StepSize />
<LowerLeft />
</Layout>
</Layouts>
<Substrates>
<Substrate>
<AliasIds>
<AliasId />
</AliasIds>
</Substrate>
</Substrates>
<SubstrateMaps>
<SubstrateMap>
<Overlay>
<ReferenceDevices>
<ReferenceDevice>
<Coordinates />
<Position />
</ReferenceDevice>
<ReferenceDevice>
<Coordinates />
</ReferenceDevice>
</ReferenceDevices>
<BinCodeMap>
<BinDefinitions>
<BinDefinition />
<BinDefinition />
<BinDefinition />
</BinDefinitions>
<BinCode><![CDATA[NEW Data TEST]]></BinCode>
</BinCodeMap>
</Overlay>
</SubstrateMap>
</SubstrateMaps>
</MapData>