xml中的额外结束括号

我使用此示例将一些变量保存到xml文件:

如何将当前类设置为返回类型结果

这是我的设置文件代码:

using System; using System.IO; using System.Xml.Serialization; namespace ssscc.Settings { public class AppSettings { public string ReceiptLine1 { set; get; } public string ReceiptLine2 { set; get; } public string ReceiptLine3 { set; get; } public string ReceiptLine4 { set; get; } public string ReceiptLine5 { set; get; } public string ReceiptLine6 { set; get; } public bool ReceiptLine1Enabled { set; get; } public bool ReceiptLine2Enabled { set; get; } public bool ReceiptLine3Enabled { set; get; } public bool ReceiptLine4Enabled { set; get; } public bool ReceiptLine5Enabled { set; get; } public bool ReceiptLine6Enabled { set; get; } public string GatewayUserName { set; get; } public string GatewayPassword { set; get; } public string GatewayId { set; get; } private static string GetSettingsFile() { var exePath = System.Windows.Forms.Application.StartupPath; var sharedDirectory = Path.Combine(exePath, "shared"); var settingsDirectory = Path.Combine(sharedDirectory, "settings"); var settingsFile = Path.Combine(settingsDirectory, "ssscc.xml"); if (!Directory.Exists(sharedDirectory)) { Directory.CreateDirectory(sharedDirectory); } if (!Directory.Exists(settingsDirectory)) { Directory.CreateDirectory(settingsDirectory); } return settingsFile; } internal void SaveSettings() { var serializer = new XmlSerializer(typeof(AppSettings)); using (var stream = File.OpenWrite(GetSettingsFile())) serializer.Serialize((Stream)stream, this); } internal static AppSettings GetInstance() { try { if (!File.Exists(GetSettingsFile())) return null; var serializer = new XmlSerializer(typeof(AppSettings)); using (var stream = File.OpenRead(GetSettingsFile())) { return (AppSettings)serializer.Deserialize(stream); } } catch (Exception ex) { Console.WriteLine(ex.Message); throw; } } } } 

当我保存数据时,初始保存正常,并在文件的末尾显示:

         false true false false false false asdfasdf asdf sdf  

当我更新文件并再次保存时,我最终得到了这个:

         false true false false false false asdfasdf asdf sdf > 

最后看到两个>>

任何人都知道为什么它会在我的xml文件末尾保存两个>>

我的代码出错了:

这是因为你正在使用File.OpenWrite

对于现有文件,它不会将新文本附加到现有文本。 相反,它会用新字符覆盖现有字符。 如果用较短的字符串(例如“Second run”)覆盖较长的字符串(例如“这是对OpenWrite方法的测试”),该文件将包含混合字符串(“OpenWrite方法的第二次运行测试” “)。

虽然从您的示例中不清楚,我怀疑新内容比旧内容短一个字节,因此您将看到原始文件中的结束尖括号。

我怀疑你应该只使用File.Create