EDITAR: Dice "Estoy concatenando un archivo XML simple y corto y no uso la serialización, por lo que necesito escapar explícitamente del carácter XML a mano".
Le recomiendo encarecidamente que no lo haga a mano. Use las API XML para hacerlo todo por usted: lea los archivos originales, combine los dos en un solo documento como lo necesite (probablemente quiera usarlo XmlDocument.ImportNode
) y luego escríbalo nuevamente. No desea escribir sus propios analizadores / formateadores XML. La serialización es algo irrelevante aquí.
Si nos puede dar un ejemplo breve pero completo de exactamente lo que está tratando de hacer, probablemente podamos ayudarlo a evitar tener que preocuparse por escapar en primer lugar.
Respuesta original
No está del todo claro lo que quiere decir, pero normalmente las API XML lo hacen por usted. Establece el texto en un nodo y automáticamente escapará de todo lo que necesite. Por ejemplo:
Ejemplo de LINQ to XML:
using System;
using System.Xml.Linq;
class Test
{
static void Main()
{
XElement element = new XElement("tag",
"Brackets & stuff <>");
Console.WriteLine(element);
}
}
Ejemplo de DOM:
using System;
using System.Xml;
class Test
{
static void Main()
{
XmlDocument doc = new XmlDocument();
XmlElement element = doc.CreateElement("tag");
element.InnerText = "Brackets & stuff <>";
Console.WriteLine(element.OuterXml);
}
}
Salida de ambos ejemplos:
<tag>Brackets & stuff <></tag>
Eso es asumiendo que desea que XML escape, por supuesto. Si no es así, publique más detalles.