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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 13 сентября 2010

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());

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

1 голос
/ 13 сентября 2010

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

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

0 голосов
/ 13 сентября 2010

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

Учебник

Скачать

...