将任意字符串(到XML属性或XML节点)序列化为XML流的最佳方法是什么,以便XML保持有效(特殊字符,换行符等必须以某种方式编码)。
答案 0 :(得分:4)
我只是使用DOM(例如XmlDocument
或XDocument
),或者使用大文件XmlWriter
:
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);
答案 1 :(得分:1)
这不正是CDATA在XML中的用途吗?您需要注意的是,您的数据不包含"]]>"
,或者您使用历史悠久的C技术以某种方式逃脱它们:
Encoding:
'\' becomes '\\'
']' becomes '\]'
Decoding:
'\]' becomes ']'
'\\' becomes '\'