8

我正在尝试使用 CDATA 在 C# 中构建 XML 文档,以将文本保存在元素中。例如..

<email>
<![CDATA[test@test.com]]>
</email>

但是,当我获得文档的 InnerXml 属性时,CDATA 已重新格式化,因此 InnerXml 字符串如下所示,但失败了。

<email>
&lt;![CDATA[test@test.com]]&gt;
</email>

访问 XML 字符串时如何保持原始格式?

干杯

4

3 回答 3

12

不要使用InnerText:使用XmlDocument.CreateCDataSection

using System;
using System.Xml;

public class Test
{
    static void Main()
    {
        XmlDocument doc = new XmlDocument();
        XmlElement root = doc.CreateElement("root");
        XmlElement email = doc.CreateElement("email");
        XmlNode cdata = doc.CreateCDataSection("test@test.com");

        doc.AppendChild(root);
        root.AppendChild(email);
        email.AppendChild(cdata);

        Console.WriteLine(doc.InnerXml);
    }
}
于 2009-06-09T09:50:55.260 回答
9

XmlDocument

    XmlDocument doc = new XmlDocument();
    XmlElement email = (XmlElement)doc.AppendChild(doc.CreateElement("email"));
    email.AppendChild(doc.CreateCDataSection("test@test.com"));
    string xml = doc.OuterXml;

或与XElement

    XElement email = new XElement("email", new XCData("test@test.com"));
    string xml = email.ToString();
于 2009-06-09T09:51:59.813 回答
1

有关如何在 XML 文档中创建 CDATA 节点的信息和示例,请参阅XmlDocument::CreateCDataSection 方法

于 2009-06-09T09:50:57.957 回答