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