EDIT: Вы говорите: «Я конкатенирую простой и короткий XML-файл, и я не использую сериализацию, поэтому мне нужно явно избежать символа XML вручную».
Я бы сильно советую вам не делать это вручную. Используйте XML API, чтобы сделать все это для вас - прочитайте в исходных файлах, объедините их в один документ, но вам нужно (вы, вероятно, захотите использовать XmlDocument.ImportNode
), а затем запишите его снова. Вы не хотите писать свои собственные синтаксические анализаторы XML/форматировщики. Сериализация здесь несколько неактуальна.
Если вы можете дать нам короткий, но полный пример того, что вы пытаетесь сделать, мы, вероятно, можем помочь вам избежать необходимости беспокоиться о побеге в первую очередь.
Оригинальный ответ
Это не совсем понятно, что вы имеете в виду, но, как правило XML API, сделать это для вас. Вы устанавливаете текст в узле, и он автоматически избегает всего, что ему нужно. Например:
LINQ к XML, например:
using System;
using System.Xml.Linq;
class Test
{
static void Main()
{
XElement element = new XElement("tag",
"Brackets & stuff <>");
Console.WriteLine(element);
}
}
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);
}
}
Выход из обоих примеров:
<tag>Brackets & stuff <></tag>
Это предполагает, что вы хотите, чтобы XML-экранирование, конечно. Если вы этого не сделаете, напишите более подробную информацию.
Кратчайший я могу думать: 'новый XText (неэкранированный) .ToString()' – sehe
Для любого другого спотыкаясь на это, я обнаружил, что это будет лучше ответ: http://stackoverflow.com/a/5304827/1224069 –
Не один путь, но вот несколько: [http://weblogs.sqlteam.com/mladenp/archive/2008/10/21/Different- пути, как к побегу-ан-строка-в-C.aspx XML] (http://weblogs.sqlteam.com/mladenp/archive/2008/10/21/Different-ways-how-to-escape -an-XML-string-in-C.aspx) – marcc