Есть ли какая-либо встроенная функция в NET Framework, которая кодирует строку в допустимый Unicode XML?

После проверки файла Xps я заметил, что строка в файле Xps <> преобразуется в &lt;&gt;

Так есть ли встроенная функция в.Net Framework, которая могла бы сделать эту работу за меня? Если не существует, какие символы <> я должен сбежать в моей собственной функции?

Я пытаюсь реализовать поиск в файле XPS, но в поиске <> вместо &lt;&gt; ничего не возвращает.

ОБНОВЛЕНИЕ: по крайней мере, я нашел здесь список escape-символов XML-документа

3 ответа

Решение

XMLTextWriter это то, что вы ищете. Вам следует избегать использования любого из методов HTMLEncode (их несколько), если вы фактически не кодируете свой текст для использования в документе HTML. Если вы кодируете текст для использования в документе XML (включая XHTML), вам следует использовать XMLTextWriter.

Нечто подобное должно сработать:

StringWriter strWriter = new StringWriter();
XmlTextWriter xmlWriter = new XmlTextWriter(strWriter);
xmlWriter.WriteString('Your String Goes here, < and >, as well as other special chars will be properly encoded');
xmlWriter.Flush();

Console.WriteLine("XML Text: {0}", strWriter.ToString());

Смотрите также это другое обсуждение стека overoverflow.

HtmlEncode должен работать для вас.
&lt; а также &gt; НЕ Юникод. Это просто экранированные символы HTML/XML.

Редактировать:
Если подумать, вы можете использовать свой собственный метод XmlEncode, поскольку в XML есть только 5 предопределенных сущностей. В HTML есть 252.

Не встроенный, но Microsoft выпустила библиотеку анти-межсайтовых скриптов, которая должна помочь. Он добавляет новые функции помимо метода.NET Html.Encode, включая метод кодирования XML.

Руководство

Скачать

Другие вопросы по тегам