代码之家  ›  专栏  ›  技术社区  ›  Nick

XML CDATA编码

  •  8
  • Nick  · 技术社区  · 17 年前

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

    但是,当我获得文档的InnerXml属性时,CDATA已被重新格式化,因此InnerXml字符串看起来像下面这样失败。

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

    干杯

    3 回复  |  直到 17 年前
        1
  •  12
  •   Jon Skeet    17 年前

    不使用 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);
        }
    }
    
        2
  •  9
  •   Marc Gravell    17 年前

    随着 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();
    
        3
  •  1
  •   elmuerte    17 年前

    XmlDocument::CreateCDataSection Method 有关如何在XML文档中创建CDATA节点的信息和示例