2011-12-29 74 views
3

我使用这个:如何在不替换所有属性的情况下编写xml属性?

public void WriteSettings(string key, string value) 
{ 
    XmlWriterSettings xmlSettings = new XmlWriterSettings(); 
    xmlSettings.Indent = true; 
    xmlSettings.NewLineOnAttributes = true; 

    XmlWriter writer = XmlWriter.Create(TMP_FULLPATH, xmlSettings); 
    writer.WriteStartElement("settings"); 
    writer.WriteAttributeString(key, value); 
    writer.WriteEndAttribute(); 
    writer.WriteEndDocument(); 
    writer.Flush(); 
    writer.Close(); 
} 

但任何修改取代只用最后剩下的属性,我试图添加的所有属性。例如:

当前XML:

<?xml version="1.0" encoding="utf-8"?> 
<settings TitleFormat="name:%name% date:%date%" /> 

当我这样做:

WriteSettings("foo", "baa"); 

的XML是:中

<?xml version="1.0" encoding="utf-8"?> 
<settings foo="baa" /> 

代替:

<?xml version="1.0" encoding="utf-8"?> 
<settings TitleFormat="name:%name% date:%date%" foo="baa" /> 

我该如何解决这个问题?

回答

1

您正在编写一个新文件,不考虑所有旧文件。要更新文件,则必须将其加载到DOM,编辑DOM,并保存DOM:

var doc = new XmlDocument(); 
doc.Load(path); 
doc.DocumentElement.SetAttribute(key, value); 
doc.Save(path); 
+0

非常感谢。 :) – Jack 2011-12-29 13:38:45

1

您每次拨打电话XmlWriter.Create()时都会创建新文件,请执行类似this的操作。

+0

非常感谢你。 :) – Jack 2011-12-29 13:39:31

相关问题