Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2018, 11:50   #1
v258
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 25
По умолчанию Маскировка символов в XML

Моя прога обрабатывает файл sitemap.xml. По спецификации некоторые символы, а именно: амперсанд (&), угловые скобки(<,>), апостроф(') и двойные кавычки(") в URL должны маскироваться. Проблема в следующем:

Для обработки использую TXMLDocument, DOMVendor - MSXML. Амперсанд и угловые скобки при добавлении URL маскируются автоматически, а вот апостроф и кавычки - нет. Если маскировать их вручную, то вместо &quot; получается &amp;quot; , а вместо &apos; получается &amp;apos; , т.е. амперсанд вполне ожидаемо тоже маскируется, что для наших целей категорически недопустимо. И, даже если готовый файл открыть в блокноте и вручную заменить кавычки и апострофы масками, при загрузке файла маски автоматически преобразуются опять таки в кавычки и апострофы.

Собственно, вопрос - как заставить XMLDocument либо маскировать и кавычки с апострофом, либо запретить маскировку символов вообще, чтобы можно было делать ее вручную при добавлении URL?

Delphi 2010
v258 вне форума Ответить с цитированием
Старый 28.05.2018, 20:31   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Засунь туда вместо кавычки что-то типа #### и сохрани. Открой потом просто как текстовый файл и замени все #### на замаскированную кавычку. Дубово, но действенно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.05.2018, 20:59   #3
v258
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Дубово, но действенно
Это было бы вариантом, если бы файл больше не трогался. Но прога юзает его довольно активно - это своего рода CMS для корпоративного сайта, сайт не мертвый, поэтому записи в сайтмап вносятся и правятся постоянно. А при первой же загрузке файла все маски тут же будут преобразованы в кавычки. И для повторного маскирования перед сохранением придется уже перебирать все записи. Короче, тупик
v258 вне форума Ответить с цитированием
Старый 29.05.2018, 09:09   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
<script>
<![CDATA[
      if (a < b && a < 0) then
      {
         return 1;
      }
      else
      {
         return 0;
      }
   }
]]>
</script>
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 29.05.2018, 09:29   #5
v258
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 25
По умолчанию

И? Каким образом это к проге, написанной на Дельфи и работающей не на сервере?
v258 вне форума Ответить с цитированием
Старый 29.05.2018, 09:44   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
И? Каким образом это к проге, написанной на Дельфи и работающей не на сервере?
СDATA tag XML позволяющий писать напрямую & < > т.п. в XML текстах. Что и показано в приведенном примере.
Код:
<?xml ...>
<ROOT>
....
<![CDATA[
      if (a < b && a < 0) then
]]>
....
</ROOT>
так понятнее???

Цитата:
И? Каким образом это к проге, написанной на Дельфи и работающей не на сервере?
прога написанная на Delphi может добавлять данный тег там где она пожелает.
сможет ли сервер этим воспользоваться ?..
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 29.05.2018 в 09:48.
evg_m вне форума Ответить с цитированием
Старый 29.05.2018, 09:55   #7
v258
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 25
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
СDATA tag XML позволяющий писать напрямую & < > т.п. в XML текстах. Что и показано в приведенном примере.
Я это знаю

Цитата:
Сообщение от evg_m Посмотреть сообщение
прога написанная на Delphi может добавлять данный тег там где она пожелает.
XML-формат файла Sitemap
Нету там места для CDATA. Да и не о том вопрос был

Цитата:
Сообщение от evg_m Посмотреть сообщение
сможет ли сервер этим воспользоваться ?..
Файлом sitemap пользуется не сервер, а поисковые роботы
v258 вне форума Ответить с цитированием
Старый 30.05.2018, 13:40   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Короче, тупик
Коль этот парсер не может такого сделать и не хочешь постобработку делать, то ищи другие, умеющие, или свой напиши. Короче - перед каждым тупиком обязательно бывает поворот налево, или направо, иногда и подземный ход ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Маскировка webbrowser'a Nugrom Общие вопросы Delphi 3 25.10.2014 20:56
Маскировка MAC адреса JollyJoker C/C++ Сетевое программирование 2 14.11.2011 13:58
Маскировка IP Df2 Безопасность, Шифрование 3 05.10.2011 19:34
маскировка под другие мессенжеры(TICQClient) DeDoK Общие вопросы Delphi 0 06.06.2009 15:34
маскировка ошибок CraZZy RabbIt Общие вопросы Delphi 0 20.03.2009 23:13