EDIT: Você diz "Estou concatenando um arquivo XML simples e curto e não uso a serialização, então preciso escapar explicitamente do caractere XML manualmente".
Eu recomendo fortemente que você não faça isso manualmente. Use as APIs XML para fazer tudo por você - leia os arquivos originais, mescle os dois em um único documento da maneira que for necessário (provavelmente você deseja usar XmlDocument.ImportNode
) e, em seguida, escreva novamente. Você não quer escrever seus próprios analisadores / formatadores XML. A serialização é um tanto irrelevante aqui.
Se você puder nos dar um exemplo breve, mas completo, de exatamente o que está tentando fazer, provavelmente podemos ajudá-lo a evitar a preocupação de escapar em primeiro lugar.
Resposta original
Não está totalmente claro o que você quer dizer, mas normalmente APIs XML fazem isso para você. Você define o texto em um nó e ele automaticamente escapará de tudo o que for necessário. Por exemplo:
Exemplo 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);
}
}
Exemplo 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);
}
}
Resultado de ambos os exemplos:
<tag>Brackets & stuff <></tag>
Isso presumindo que você deseja escape de XML, é claro. Se não estiver, poste mais detalhes.