Используйте узел CDATA, например:
class Program {
static void Main(string[] args) {
XmlDocument d = new XmlDocument();
XmlNode root = d.CreateNode(XmlNodeType.Element, "root", null);
d.AppendChild(root);
XmlNode cdata = d.CreateNode(XmlNodeType.CDATA, "cdata", null);
cdata.InnerText = "some <b>bolded</b> text";
root.AppendChild(cdata);
PrintDocument(d);
}
private static void PrintDocument(XmlDocument d) {
StringWriter sw = new StringWriter();
XmlTextWriter textWriter = new XmlTextWriter(sw);
d.WriteTo(textWriter);
Console.WriteLine(sw.GetStringBuilder().ToString());
}
}
Это напечатает
<root><![CDATA[some <b>bolded</b> text]]></root>
Секция CDATA выглядит некрасиво, но именно так вы вставляете текст без экранирования символов ...
В противном случае вы можете использовать свойство InnerXml узла:
static void Main(string[] args) {
XmlDocument d = new XmlDocument();
XmlNode root = d.CreateNode(XmlNodeType.Element, "root", null);
d.AppendChild(root);
XmlNode cdata = d.CreateNode(XmlNodeType.Element, "cdata", null);
cdata.InnerXml = "some <b>bolded</b> text";
root.AppendChild(cdata);
PrintDocument(d);
}
Это печатает
<root><cdata>some <b>bolded</b> text</cdata></root>
Но обратите внимание, когда вы десериализуете его, поскольку содержимое узла "cdata" теперь фактически состоит из трех узлов.