C#讀取與更新XML

<本篇文章使用 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>