XContainer を指定すると、そのコンテンツ (ルート要素を含む) を完全にラップしたいと思います。XContainer には XML が含まれています。XContainer のコンテンツを親要素にラップして、XHTML ドキュメントを作成しようとしています。
XElement headElement = new XElement("head");
XElement bodyElement = new XElement("body", container);
container.ReplaceWith(new XElement("html", headElement, bodyElement));
上記は機能しません。これは可能ですか?または、別の XContainer を作成し、元の XContainer の内容でビルドする必要がありますか?
アップデート
漠然とした質問で申し訳ありません。コンテキストを追加させてください。XContainer を引数として取るメソッドがあります。この XContainer インスタンスを変更したいと思います。望ましい最終結果は、元の XContainer コンテンツが body 要素に「ラップ」されることです。以下の例では、ReplaceWith() の呼び出し後、XContainer は変更されていないように見えます。つまり、コンテナには「html、head、または body」という要素が含まれていません。これがより明確であることを願っています。
protected void BuildXhtmlDocument(XContainer container)
{
XElement headElement = new XElement("head");
XElement bodyElement = new XElement("body", container);
container.ReplaceWith(new XElement("html", headElement, bodyElement));
}