2

XmlDocumentコードのさまざまな部分で を条件付きで変更しています。「変更された」フラグを渡す代わりに、XmlDocumentオブジェクトにはこれ用に構築されたフラグがありますisDirtyか?

var doc = new XmlDocument();
doc.Load(file);

if (...) parent.AppendChild(element);
if (...) parent2.AppendChild(element2);
if (...) parent3.AppendChild(element3);

//METHOD DOESN'T EXIST
if (doc.isDirty())
  doc.Save(file);
4

2 に答える 2

5

XmlDocumentはIsDirtyフラグを公開しませんが、 NodeChangedNodeInsertedNodeRemovedなどのイベントがあり、単一のフラグを保持するために使用できます。これらは、ミューテーションメソッドに渡す必要はありません。

var doc = new XmlDocument();
doc.Load(file);

bool changed = false;

XmlNodeChangedEventHandler handler = (sender, e) => changed = true;
doc.NodeChanged += handler;
doc.NodeInserted += handler;
doc.NodeRemoved += handler;

// do some work

if (changed)
    doc.Save(file);
于 2013-03-19T13:22:35.000 に答える
2

いいえ、XmlDocument はドキュメントを保存しますが、変更を追跡しません。ヘルパークラスにラップするか、説明どおりにフラグを設定するか、他のオブジェクト指向構造を作成して、必要な方法で機能させます。

于 2013-03-19T13:12:19.560 に答える