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

1

XmlWriter.Create()を呼び出すたびに新しいファイルを作成する場合は、thisのようにします。

+0

どうもありがとうございましたあなたも。 :) – Jack

関連する問題