2

次のように、XDocument の静的な Load メソッド (XmlReader を使用) を使用して XDocument を作成しました。

XDocument doc;

doc = XDocument.Load(reader);

ここで、ある時点でドキュメントをリロードする必要があります (変更が行われた後に元のバージョンに復元する)。これを行う明白な方法は次のようですdoc = XDocument.Load(reader);。ただし、これにより新しい XDocument が作成docされ、オリジナルを (再) ロードしたにもかかわらず、既存の参照は古い (変更された) バージョンを指し示します。

XmlReader (または XML の string または byte[] 表現) を既存の XDocument にロードして、内容を上書きする方法はありますか? それとも、すべての変更 (要素の削除と新しい要素の追加) を手動で行う必要がありますか?

4

2 に答える 2

3

のルートを置き換えることができますXDocument

var oldDoc = new XDocument();
oldDoc.Add(new XElement("OldRoot"));
var newDoc = new XDocument();
newDoc.Add(new XElement("NewRoot"));
oldDoc.Root.ReplaceWith(newDoc.Root);
于 2012-12-20T19:27:32.960 に答える
3

あなたはできるはずです

 doc.Root.ReplaceWith( XElement.Load(fileName));

処理命令を保持したい場合は、最初に一時 XDocument にロードする必要がある場合があります。

于 2012-12-20T19:28:33.927 に答える