Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Замена спецсимволов в xml в C# (http://forum.oszone.net/showthread.php?t=204653)

Gamer 13-04-2011 11:22 1657177

Замена спецсимволов в xml в C#
 
Всем прива.

Есть некая прога на C#, которая берет данные из некой БД и пихает все это дело в .xml . В данных часто попадаются различные спецсимволы, которые надо менять на соответствующие коды при выгрузке в .xml. Но. Программа меняет то, что не надо. Например, в исходных данных мы имеем:

Код:

Тест&Тест
Это добро нам надо обработать. Программа это делает методом(?) Replace:

Код:

strText.Replace("&", "& amp;");
В .xml мы ожидаем увидеть это:

Код:

Тест& amp;Тест
А получаем вот это:

Код:

Тестamp;amp;Тест
Глядя на эту печальную картину, вырисовывается предположение, что где-то в программе есть глобальная настройка или что-нибудь типа этого, что регламентирует замену символов и превалирует над дальнейшим кодом. Загвоздка в том, что я понятия не имею, что это. Хотя гугл кивает в сторону system.xml .

Буду благодарен, если кто подскажет, как можно убрать эту автозамену.

Beyound 13-04-2011 18:09 1657491

не хота лезть в описание этого метода, но что Вам мешает скажем в тексте циклом искать этот & и когда его встретишь сразу после него дописывать " amp;" т.е. грубо вы же всеравно копируете текст, почему бы его при это не анализировать посимвольно?

Gamer 15-04-2011 09:28 1658740

Хм. Если есть глобальное правило, не получится ли, как с Replace?

Beyound 15-04-2011 16:27 1659101

ну смотря как ты напишешь. все в твоих руках - не можешь понять как работает функция - пишешь свою функцию

Gamer 15-04-2011 17:05 1659123

Совершенно верно. Понять, как работает Replace, а, точнее, почему выгружает неправильно, я так и не смог.

Зато обнаружил такую замечательную штуку как WriteRaw, подправил программку и обрел счастье.

Собственно, спасибо, проблему можно считать решенной. :)ъ

UPD: Поправка. Дело не Replace, а в WriteElementString, который, видимо, автоматом заменяет спецсимволы в данных перед выводом.


Время: 19:33.

Время: 19:33.
© OSzone.net 2001-