2017-03-23 17 views
0

前に、ルートXML要素を追加します。は、私は、次のXML文書を持っている別のルートのC#

次のコードを試しましたが、ドキュメントが正しく構築されていないというエラーが表示されます。

using (XmlReader reader = cmd.ExecuteXmlReader()) 
        { 
         XDocument doc = XDocument.Load(reader); 
         doc.Root.AddBeforeSelf(new XElement("Manifest")); 
         string path = outputPath + "\\" + xmlFileName; 

         doc.Save(path);  
        } 

答えて

1

XMLは、唯一の "ルート" 要素を持つことができます:ここでは

は、私がしようとしているコードです。だから、あなたが希望している構造が有効ではありません。

<Manifest> 
    ... 
</Manifest> 
<Machines> 
    ... 
</Machines> 

次の2つの兄弟要素をしたい場合、彼らは別の親要素に含まれる必要があります。

XDocument newDoc = new XDocument(new XElement("Manifest", doc.Root)); 
:次に、あなたが 新しい文書を作成する必要があり、私はマニフェスト要素は、XML

の残りの部分を含むように機械要素や機械要素を囲むようにしたい

これにより、元の文書のルート(および内容)を内容とするManifestルートタグを持つ新しいXDocumentが作成されます。

+0

申し訳ありませんイムXMLに新しい完全な、私はマシンを取り囲むようにマニフェストの要素をする2つの「ルート要素」をたくありませんそれが理にかなっていれば、xmlの残りの部分を含むようにMachines要素を追加してください。 – Mattaceten

+0

したがって、Manifest要素をMachines要素の周りに挿入し、Manifest要素を理想的な機械ではなくルートとして持つことが可能であれば、 – Mattaceten

1

現在Rootに新しい要素を作成し、新しいXDocumentにそれを置く:

XDocument newDoc = new XDocument(new XElement("Manifest", doc.Root)); 
関連する問題