2011-12-29 138 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

相關問題