Есть ли какая-либо встроенная функция в NET Framework, которая кодирует строку в допустимый Unicode XML?
После проверки файла Xps я заметил, что строка в файле Xps <>
преобразуется в <>
Так есть ли встроенная функция в.Net Framework, которая могла бы сделать эту работу за меня? Если не существует, какие символы <>
я должен сбежать в моей собственной функции?
Я пытаюсь реализовать поиск в файле XPS, но в поиске <>
вместо <>
ничего не возвращает.
ОБНОВЛЕНИЕ: по крайней мере, я нашел здесь список 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 должен работать для вас.<
а также >
НЕ Юникод. Это просто экранированные символы HTML/XML.
Редактировать:
Если подумать, вы можете использовать свой собственный метод XmlEncode, поскольку в XML есть только 5 предопределенных сущностей. В HTML есть 252.
Не встроенный, но Microsoft выпустила библиотеку анти-межсайтовых скриптов, которая должна помочь. Он добавляет новые функции помимо метода.NET Html.Encode, включая метод кодирования XML.