| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Преобразование в строку как XML |
| Автор: amarenkov 2.7.2008, 09:17 |
| Добрый день. Подскажите, кто знает, как мне преобразовать объект в строку, так же как это делает XMLWriter, не создавая его. Когда мы при помощи XMLWriter записываем double - он записывается через точку, а когда пишем string, то там все символы кавычек, угловых скобок и т.п. преобразуются в спец. строки, типа < и т.д. У меня есть шаблон: tmpl = "<cp name=\"{0}\" />". Если я использую Format(tmpl, "<имя>"), то, конечно же, строка вставляется в нужно место безо всяких преобразований. А мне необходимо ее преобразовать в xml-корректную строку. Варианты решения типа: "создай XMLWriter, потом WriteStartElment, потом пишешь атрибут..." не предлагать Заранее спасибо |
| Автор: altarvic 2.7.2008, 11:43 |
| Предлагаю другой вариант: "создай XMLSerializer, потом метод Serialize..." |
| Автор: Bogdan1024 2.7.2008, 15:21 |
| Может быть System.Web.HttpServerUtility поможет? У него есть HtmlEncode/HtmlDecode... |
| Автор: mihryak 2.7.2008, 15:41 |
он вроде как слишком много энкодит явовские реализации XmlEncode заменяют только < ' & " > на соответственно < ' & " > погугли на тему XmlEncode |
| Автор: PashaPash 2.7.2008, 15:55 |
| mihryak, есть отличная .net-овская реализация XmlEncode. В классе XmlWriter. Но топикастера она не устраивает по необъяснимым причинам. |
| Автор: altarvic 3.7.2008, 08:09 |
| amarenkov для строк используй XmlConvert.EncodeName |
| Автор: amarenkov 3.7.2008, 08:13 |
Меня не устраивает не сам этот объект, а то, что надо надо писать много функций - открыть тег, записать атрибут, закрыть тег. Иначе он ругается (по-моему). А мне бы какая-нибудь функция подошла бы. Желательно в статическом классе altarvic, спасибо, попробую сейчас. Добавлено через 12 минут и 28 секунд XmlConvert по-чуть не подходит. Все-таки имя и содержимое тега или атрибута - несколько разные вещи, и разным правилам подчиняются. Плюс к этому, преобразовать тип в строку не может, хотя и может обратно. Конечно, если поставить ConformanceLevel.Fragment, то XmlWriter не ругается. Но необходимость создавать XmlWriterSettings и XmlWriter остается. Вообщем, если других вариантов не будет, то создам статический член XmlWriter в своем классе и буду его инициализировать в статическом конструкторе, а потом использовать |
| Автор: altarvic 3.7.2008, 08:38 |
| Тогда только так поскольку XmlWriter для этого использует внутренний класс XmlTextEncoder :( |