0

基本的に、別の XmlDocument 内に XmlDocument を挿入する方法を知りたいです。

最初の XmlDocument には、基本的なヘッダー タグとフッター タグがあります。2 番目の XmlDocument は、最初の XmlDocument に挿入する必要がある body/data タグになります。

            string tableData = null;
            using(StringWriter sw = new StringWriter())
            {
                rightsTable.WriteXml(sw);

                tableData = sw.ToString();                    
            }

            XmlDocument xmlTable = new XmlDocument();
            xmlTable.LoadXml(tableData);

            StringBuilder build = new StringBuilder();
            using (XmlWriter writer = XmlWriter.Create(build, new XmlWriterSettings { OmitXmlDeclaration = true }))
            {
                writer.WriteStartElement("dataheader");

                //need to insert the xmlTable here somehow

                writer.WriteEndElement();
            }

これに対するより簡単な解決策はありますか?

4

4 に答える 4

1

あなたが本当に探しているものはわかりませんが、これは2つのxmlドキュメントをマージする方法を示しています(Linq2xmlを使用)

string xml1 =
    @"<xml1>
    <header>header1</header>
    <footer>footer</footer>
    </xml1>";

string xml2 =
    @"<xml2>
    <body>body</body> 
    <data>footer</data>
    </xml2>";

var xdoc1 = XElement.Parse(xml1);
var xdoc2 = XElement.Parse(xml2);

xdoc1.Descendants().First(d => d.Name == "header").AddAfterSelf(xdoc2.Elements());

var newxml = xdoc1.ToString();

出力

<xml1>
  <header>header1</header>
  <body>body</body>
  <data>footer</data>
  <footer>footer</footer>
</xml1>
于 2012-09-07T14:11:51.543 に答える
1

ドキュメント パーサーで importNode 機能を使用します。

于 2012-09-07T13:59:41.367 に答える
1

CDATA内部 XML ファイルをセクションに記述する必要があります。

このようなノードに使用writer.WriteCDataし、内部 XML をテキストとして渡します。

writer.WriteCData(xmlTable.OuterXml);

もう 1 つのオプション ( DJQuimby に感謝) は、XML を XML と互換性のある形式 (base64 など) にエンコードすることです。 .

于 2012-09-07T13:59:53.927 に答える
1

CreateCDataSection メソッドに基づいてこのコードを使用できます

// Create an XmlCDataSection from your document
var cdata = xmlTable.CreateCDataSection("<test></test>");

XmlElement root = xmlTable.DocumentElement;

// Append the cdata section to your node
root.AppendChild(cdata);

リンク: http://msdn.microsoft.com/fr-fr/library/system.xml.xmldocument.createcdatasection.aspx

于 2012-09-07T14:00:45.250 に答える