Was ist der beste Weg, eine beliebige Zeichenfolge (in einem XML-Attribut oder XML-Knoten) in einen XML-Stream zu serialisieren, damit die XML-Datei gültig bleibt (Sonderzeichen, Zeilenumbrüche usw.) irgendwie codiert).Serialisieren Sie eine beliebige Zeichenfolge in XML.
2
A
Antwort
4
Ich würde einfach entweder einen DOM (wie XmlDocument
oder XDocument
) oder für große Dateien verwenden, 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
Ist das nicht genau das, was CDATA wird verwendet für in XML zu verstehen? Alles, was Sie achten müssen, ist, dass Ihre Daten nicht "]]>"
enthalten, oder dass man sie irgendwie die altehrwürdige C-Technik entkommen:
Encoding:
'\' becomes '\\'
']' becomes '\]'
Decoding:
'\]' becomes ']'
'\\' becomes '\'