我在条件的各个部分有条件地更改了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);
答案 0 :(得分:5)
虽然 XmlDocument 没有公开 IsDirty 标记,但它确实包含 NodeChanged , NodeInserted 等事件, NodeRemoved ,您可以使用它来保留单个标志,您无需将其传递给任何变异方法:
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);
答案 1 :(得分:2)
不,XmlDocument存储文档,它不跟踪更改。将它包装在一个帮助器类中,按照你的描述设置一个标志,或者创建一些其他的OO结构以便按照你想要的方式工作。