在.NET中将任意字符串序列化为XML

在.NET中将任意字符串序列化为XML,.net,xml-serialization,.net,Xml Serialization,将任意字符串(到XML属性或XML节点)序列化到XML流以使XML保持有效(特殊字符、换行符等必须以某种方式进行编码)的最佳方法是什么 XDocument xdoc = new XDocument(new XElement("xml", "a < b & c")); Console.WriteLine(xdoc.ToString()); XmlDocument xmldoc = new XmlDocument();

将任意字符串(到XML属性或XML节点)序列化到XML流以使XML保持有效(特殊字符、换行符等必须以某种方式进行编码)的最佳方法是什么

        XDocument xdoc = new XDocument(new XElement("xml", "a < b & c"));
        Console.WriteLine(xdoc.ToString());

        XmlDocument xmldoc = new XmlDocument();
        XmlElement root = xmldoc.CreateElement("xml");
        xmldoc.AppendChild(root).InnerText = "a < b & c";
        Console.WriteLine(xmldoc.OuterXml);

        StringBuilder sb = new StringBuilder();
        XmlWriterSettings settings = new XmlWriterSettings();
        settings.OmitXmlDeclaration = true;
        using (XmlWriter xw = XmlWriter.Create(sb, settings))
        {
            xw.WriteElementString("xml", "a < b & c");
        }
        Console.WriteLine(sb);
xdocumentxdoc=newxdocument(newxelement(“xml”,“a
这不正是CDATA在XML中的用途吗?您需要注意的是,您的数据不包含
“]]>”
,或者您使用由来已久的C技术以某种方式逃逸了它们:

Encoding:
    '\' becomes '\\'
    ']' becomes '\]'
Decoding:
    '\]' becomes ']'
    '\\' becomes '\'