2009-04-21 3 views
2

Каков наилучший способ сериализации строки (в атрибуте XML или XML-узле) в поток XML, чтобы XML оставался действительным (специальные символы, строки перевода и т. Д. Должны быть как-то закодировано).Сериализация строки в XML в .NET.

ответ

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

не то, что именно то, что CDATA предназначен для использования в XML? Все, что вам нужно обратить внимание, это то, что ваши данные не содержат "]]>", или что вы их каким-то образом избегаете использовать технику С по времени:

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