將 XML 文件內容載入 RichTextBox 編輯後保存,用記事本打開格式錯亂,用寫字板打開顯示亂碼。
StreamWriter 默認 UTF-8,而 XML 可能聲明 encoding="gb2312",直接寫入導致解析錯誤。TextRange.Text 返回純文本,丟失 RTF 格式;若原文件為 RTF 則需用 TextRange.Save。 和換行縮進。private void btnSave_Click(object sender, RoutedEventArgs e) {
// 1. 讀取原文件編碼(可簡化為強制 UTF-8 無 BOM)
var encoding = new UTF8Encoding(false); // 無 BOM
// 2. 獲取 RichTextBox 完整文本(含換行)
TextRange range = new TextRange(richTextBox1.Document.ContentStart,
richTextBox1.Document.ContentEnd);
string content = range.Text;
// 3. 寫入文件
using (var sw = new StreamWriter(filePath, false, encoding)) {
sw.Write(content);
}
}
using System.Xml;
using System.Xml.Linq;
private void SaveFormattedXml(string filePath, string rawXml) {
XDocument doc = XDocument.Parse(rawXml, LoadOptions.PreserveWhitespace);
// 或 LoadOptions.SetLineInfo 保留行號
var settings = new XmlWriterSettings {
Encoding = new UTF8Encoding(false),
Indent = true,
IndentChars = " ",
NewLineChars = "\n",
OmitXmlDeclaration = false
};
using (var writer = XmlWriter.Create(filePath, settings)) {
doc.Save(writer);
}
}
XDocument/XmlDocument 構建與保存。RichTextBox 僅用於富文本編輯(RTF/HTML),純文本/XML/JSON 請用 TextBox + XDocument 分離關注點。