0

複数のルート要素を持つ XML を作成しようとしています。これは、XML をサーバーに送信する方法であるため、変更できません。コードを実行しようとすると、次のエラーが表示されます。

System.InvalidOperationException: この操作は、不適切な構造のドキュメントを作成します。

このエラーを上書きして無視する方法はありますか?

わかりましたので、これをよりよく説明しましょう:

これが私が持っているものです

XmlDocument doc = new XmlDocument();
doc.LoadXml(_application_data);

これで XML ドキュメントが作成されました。これに偽のルート要素を追加して、それが機能するようにします。ただし、それを取り除き、DocumentElement オブジェクトに変換する必要があります。

どうすればそれを行うことができますか?

4

3 に答える 3

4

ここに示すように、XmlWriter を作成するときにFragmentを指定します。

XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.CloseOutput = false;

// Create the XmlWriter object and write some content.
MemoryStream strm = new MemoryStream();
using (XmlWriter writer = XmlWriter.Create(strm, settings))
{
    writer.WriteElementString("orderID", "1-456-ab");
    writer.WriteElementString("orderID", "2-36-00a");
    writer.Flush();
}
于 2012-10-24T22:43:35.907 に答える
0

複数のルート要素がある場合、それは XML ではありません。他の点で XML に似ている場合は、ルート要素の下にすべてを配置し、文字列をサーバーに送信するときに、このルート要素のシリアル化された子要素を結合するか、@Austin が指摘するように、内部 XML を使用します。可能であれば方法。

于 2012-10-24T22:43:17.860 に答える
0

単一のルートを持つ XML を作成し、そのコンテンツを XML テキストとして取得するだけです。

良い xml にはルートが 1 つしかないため、とにかく XML フラグメントについて話しているのです。

これは、開始に役立つサンプルです。

var xml = new XmlDocument();
var root = xml.CreateElement("root");
root.AppendChild(xml.CreateElement("a"));
root.AppendChild(xml.CreateElement("b"));
Console.WriteLine(root.InnerXml); // outputs "<a /><b />"
于 2012-10-24T22:53:18.820 に答える