對這文章發表回應
發表限制: 非會員 可以發表
(C#)寫出/讀取 XML之方法
寫出XML用拼文字的方式
先寫XML最上面那行
string mystr="<?xml version=\"1.0\" encoding=\"utf-8\" ?>"+Environment.NewLine+"<Data>"+ Environment.NewLine;
跑個For迴圈組合XML裡面的相關Node
For(條件條件)
{
mystr += string.Format
("<Item>" + Environment.NewLine+
"<Name>{0}</Name>"+Environment.NewLine+
"<URL><![CDATA[{1}]]></URL>" + Environment.NewLine +
"</Item>"+Environment.NewLine
,你要放的{0}的值,你要放的{1}的值
);
mystr += Environment.NewLine;
}
然後寫出
StreamWriter sw = new StreamWriter(Application.StartupPath+"\\取個檔案的名字.xml", false, System.Text.Encoding.UTF8);
sw.Write(mystr);
sw.Flush();
sw.Close();
寫出後的XML會長這樣,注意用CDATA的功用是可以避開很多特殊字元,像是&、<..等等,
遇到這些字元的話不用CDATA會錯誤
<?xml version="1.0" encoding="utf-8" ?>
<Data>
<Item>
<Name>Cool1 </Name>
<URL><![CDATA[http://www.google.com]]></URL>
</Item>
<Item>
<Name>Cool2 </Name>
<URL><![CDATA[http://www.gamer.com.tw]]></URL>
</Item>
</DATA>
========================補充============================
如果要去改XML裡面某個Node節點之間的值的話,可用
XmlDocument xd = new XmlDocument();
xd.Load(
"my.xml");
XmlNode node = xd.SelectSingleNode( "//Hello");
node.InnerText = "你好";
xd.Save( "my.xml");
這樣會把原本的<Hello></Hello>修改成
<Hello>你好</Hello>
========================補充============================
接著下面是讀取
XmlDocument xd = new XmlDocument();
xd.Load("NameAndURL.xml");
XmlNodeList nodelist = xd.SelectNodes("//Item");
for (int i = 0; i < nodelist.Count; i++)
{
richTextContent.AppendText(nodelist[i].SelectSingleNode("URL").InnerText);
richTextContent2.AppendText(Environment.NewLine);
}
這樣會在RichTextBox控制項裡印出
原文出處: (C#)寫出/讀取 XML之方法 @ 式門遁甲 :: 痞客邦 PIXNET ::
冷日補充:
會轉這篇是因為,冷日測試發現,用前面所說的辦法直接輸出的話,UltraEdit 判定輸出之檔案為純 DOS 格式,連 UTF-8 都不是!
雖然依照 VS2013 官方的說法,他輸出就是 UTF-8 了,但是冷日擔心害怕,所以還是檢查一下好了!
換言之,輸出時記得採用[code]new StreamWriter([String that you want to write out], System.Text.Encoding.UTF8);[code]即可!