如何把一段XML字符串加入到XML文档中?

一个字符串加入到XML DOM中不象想的那么容易。我们需要使用XmlDocumentFragment(它是XmlNode的子类)才行。

下面是一段范例代码:

using System;
using System.Xml;
namespace XMLSample
{
   /// <summary>
   /// 
   /// </summary>
   class Startup
   {
      /// <summary>
      /// The main entry point for the application.
      /// </summary>
      [STAThread]
      static void Main(string[] args)
      {
            // This is the document that we're starting with
            string startingXml = @"<?xml version='1.0'?>
<DECORATING_IDEAS_ROOM>
    <WEBIMG>
        <IMG NAME='Header' src='/images/living1.gif'/>
    </WEBIMG>
    <WEBIMG>
        <IMG NAME='SubHeader' src='/images/sub_living.gif'/>
    </WEBIMG>
    <WEBIMG>
        <IMG NAME='Room' src='/images/living12.jpg'/>
    </WEBIMG>
</DECORATING_IDEAS_ROOM>
";
            // 新建一个XML文件,此文件用于示例
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(startingXml);
            Console.WriteLine("The original XML...");
            doc.Save(Console.Out);
            Console.WriteLine();
            
            // 下面是需要插入的字符串
            string toInsert = @"
<WEBIMG>
    <IMG NAME='BuyHeader' src='/images/abc.jpg'/>
</WEBIMG>
";
            // 创建XMLNODE结点,这是这个问题的关键
            XmlDocumentFragment docFrag = doc.CreateDocumentFragment();
 
            // 设置这个节点的内容,这是正真干活的代码
            docFrag.InnerXml = toInsert;
            // 加入新结点
            doc.DocumentElement.AppendChild(docFrag);
            Console.WriteLine();
            Console.WriteLine("The modified XML:");
            doc.Save(Console.Out);        }
   }
}