添加带格式的XML节点

And*_*rew 1 c# xml formatting

我正在向XML文件添加一个节点,但我需要将其正确格式化.你可以帮忙吗?

        String newFile = System.IO.Path.GetFileName(textBox1.Text);

        //file name
        string filename = @"palette.xml";
        XmlDocument doc = new XmlDocument();
        doc.Load(filename);

        //create node and add value
        XmlNode node = doc.CreateNode(XmlNodeType.Element, "item", null);

        //create title node
        XmlNode nodeTitle = doc.CreateElement("name");
        //add value for it
        nodeTitle.InnerText = @"<![CDATA["+newFile+"]]>";

        //create Url node
        XmlNode nodeUrl = doc.CreateElement("imgfile");
        nodeUrl.InnerText = newFile;

        //add to parent node
        node.AppendChild(nodeTitle);
        node.AppendChild(nodeUrl);

        //add to elements collection
        doc.DocumentElement.AppendChild(node);

        //save back
        doc.Save(filename);
Run Code Online (Sandbox Code Playgroud)

XML应该看起来像这样:

  <item>
  <name><![CDATA[panda.gif]]></name>
  <imgfile>panda.gif</imgfile>
  </item>
Run Code Online (Sandbox Code Playgroud)

但它看起来像那样:

  <item>
  <name>&lt;![CDATA[panda.gif]]&gt;</name>
  <imgfile>panda.gif</imgfile>
  </item>
Run Code Online (Sandbox Code Playgroud)

Alg*_*thm 5

有一种方法可以用来包装cdata.

XMLNode.AppendChild( XMLDocument.CreateCDataSection( newFile ) );
Run Code Online (Sandbox Code Playgroud)

它XMLDocument.CreateCDataSection返回XmlCDataSection对象,您可以将该对象附加到您的节点,它将您的文件包装在CDATA中.

请查看此信息以获取更多信息:http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createcdatasection.aspx