添加带有格式的XML节点

本文关键字:XML 节点 有格式 添加 | 更新日期: 2023-09-27 18:18:56

我正在向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);

XML应该是这样的:

  <item>
  <name><![CDATA[panda.gif]]></name>
  <imgfile>panda.gif</imgfile>
  </item>

但是它看起来是这样的:

  <item>
  <name>&lt;![CDATA[panda.gif]]&gt;</name>
  <imgfile>panda.gif</imgfile>
  </item>

添加带有格式的XML节点

有一个方法可以用来包装数据。

XMLNode.AppendChild( XMLDocument.CreateCDataSection( newFile ) );

XMLDocument。CreateCDataSection返回XmlCDataSection对象,你可以追加到你的节点,它将包装你的文件在CDATA。

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

CDATA被视为一个节点,而不是一个内部文本

<item>
  <name>
    <![CDATA[panda.gif]]>
  </name>
  <imgfile>panda.gif</imgfile>
</item>

:

XmlElement nodeTitle = document.CreateElement("name");
XmlCDataSection CDATA = document.CreateCDataSection("panda.gif");
nodeTitle.AppendChild(CDATA);
node.AppendChild(nodeTitle);