Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 9

XML-RPC и кириллица

02.05.2012, 16:51. Показов 2703. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу прогу для постинга в wordpress через xml-rpc. Сам xml лежит в TXMLDocument. Помогите плиз, как воткнуть в xml запрос кириллицу? 2е сутки уже мучаюсь.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?xml version="1.0" encoding="utf-8"?>
 <methodCall>
   <methodName>metaWeblog.newPost</methodName>
<params> 
        <param>
                <value><int>1</int></value>
        </param>
 
        <param>
                <value><string>newtehnik</string></value>
        </param>
 
        <param>
                <value><string>newtehnik</string></value>
        </param>
 
   <param>
     <value>
      <struct>
       <member>
        <name>title</name>
        <value>
         <string>title</string>
        </value>
       </member>
       
       <member>
        <name>description</name>
        <value>
         <string>Тут должен быть текст кириллицей</string>
        </value>
       </member>
      </struct>
     </value>
     </param>
     <param>
     <value>
      <boolean>1</boolean>
     </value>
 </param>
 
</params>
</methodCall>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.05.2012, 16:51
Ответы с готовыми решениями:

Сервер RPC недоступен
не могу создать документ word после создания предыдущего! после выхода и обратного входа в программу - все работает!в чем проблема?

При создании нескольких word-файлов вылетает ошибка-сервер RPC недоступен!?
В программе создаю последовательно сначала один документ и вывожу его в формате ворд, далее пытаюсь создать второй, но выходит ошибка...

SOAP vs. XML-RPC
Привет всем) У меня (может и странный) вопрос. Можно ли работать с SOAP без создания *.wsdl файла? К примеру принимать данные со...

16
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
02.05.2012, 17:33
Ну, вы как бы ее уже воткнули. Проблема в чем?
0
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 9
02.05.2012, 17:36  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Ну, вы как бы ее уже воткнули. Проблема в чем?
Проблемы нет с латиницей. Как только пытаюсь отправить кириллицу - получаю "parse error. not well formed"
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
02.05.2012, 17:46
А файл действительно encoding="utf-8" ?
0
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 9
02.05.2012, 17:49  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
А файл действительно encoding="utf-8" ?
Не уверен. Т.к. этот код просто набран в String List Editor'е компонента. Вот мне бы и хотелось узнать, как сделать его действительно в ютф-8.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
02.05.2012, 18:00
В свойствах компонента этого нет ? Не помню, поскольку делаю это ручками:
C++
1
xmlDoc->Encoding = "UTF-8"; // XML declaration
, да и сам файл делаю при необходимости ручками кодом, а не в эдиторе.
0
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 9
02.05.2012, 18:16  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
В свойствах компонента этого нет ? Не помню, поскольку делаю это ручками:
C++
1
xmlDoc->Encoding = "UTF-8"; // XML declaration
, да и сам файл делаю при необходимости ручками кодом, а не в эдиторе.
В свойствах компонента нет.
C++
1
xmlDoc->Encoding = "UTF-8"
- Выбивает Access violation.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
02.05.2012, 18:21
Цитата Сообщение от Firestarter22 Посмотреть сообщение
C++
1
xmlDoc->Encoding = "UTF-8"
- Выбивает Access violation.
наверное, у вас нет xmlDoc.
0
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 9
02.05.2012, 18:27  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
наверное, у вас нет xmlDoc.
XMLDocument1->Encoding = "UTF-8"; У меня эта строка выглядит так. От названия же суть не меняется)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
02.05.2012, 18:32
ну да, ну и меня это выглядит так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  _di_IXMLDocument xmlDoc;
  xmlDoc = NewXMLDocument();
  xmlDoc->Active = true;
  // Options:  
  // doNodeAutoCreate,doNodeAutoIndent,doAttrNull,
  // doAutoPrefix,doNamespaceDecl,doAutoSave
  xmlDoc->Options = xmlDoc->Options<<doNodeAutoCreate
                                   <<doNodeAutoIndent // автоотступ
                                   <<doAttrNull
                                   <<doAutoPrefix
                                   <<doNamespaceDecl;
  // ParseOptions:
  // poResolveExternals,poValidateOnParse,
  // poPreserveWhiteSpace,poAsyncLoad
  xmlDoc->ParseOptions = xmlDoc->ParseOptions<<poResolveExternals
                                             <<poValidateOnParse
                                             <<poPreserveWhiteSpace
                                             <<poAsyncLoad;
  // Форматирование, отступ - табуляция, если отступ - пробел - poPreserveWhiteSpace
  xmlDoc->NodeIndentStr = "\t"; // poPreserveWhiteSpace
  xmlDoc->Encoding = "UTF-8"; // XML declaration
  xmlDoc->FileName = "";
//...
0
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 9
02.05.2012, 18:56  [ТС]
C++
1
xmlDoc->Encoding = "UTF-8";
срабатывает, только если в коде нет кириллических символов. Если же они имеются, сразу access violation. Что делать и кто виноват?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
02.05.2012, 19:00
Версия билдера какая, может, дело в юникоде?
0
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 9
02.05.2012, 19:02  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Версия билдера какая, может, дело в юникоде?
Билдер 6.

Может есть какой-нибудь другой компонент для xml, который дружит с ЮТФ-8 без танцев с бубном?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
02.05.2012, 21:16
Для шестого билдера есть юникодные tnt unicode controls, есть ли там хмл - не помню, но можна извратиться, занося код хмл в мемо, и сохраняя ейный текст в хмл файл, или просто отсылать, или - подставлять строку из мемы в код хмл - это уж на месте смотреть.
Присмотритесь к Билдеру ХЕ (РАД Студио ХЕ), там юникод, да и пора уже.
1
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 9
03.05.2012, 17:50  [ТС]
Буду пробовать XE

Добавлено через 19 часов 43 минуты
Хм... В билдере ХЕ ни с кириллицей, ни с латиницей не пашет.

Добавлено через 39 минут
Всё! Разобрался! Сохраняю хмл в текстовый файл в ютф-8, а его подгружаю в TMemoryStream, который уже и отправляется на сервак. Но может есть какое-нибудь более грамотное решение проблемы?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
03.05.2012, 18:13
Можно обойтись без файла, сформировав xml в Memo или вообще в StringList и сохранив SaveToStream(stream), потом поток отправлять.

Добавлено через 13 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
std::auto_ptr<TStringList>xml_list(new TStringList);
// или TStringList *xml_list = new TStringList;
// потом не забыть delete xml_list;
xml_list->Add("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
xml_list->Add("<methodCall>");
xml_list->Add(" <methodName>metaWeblog.newPost</methodName>");
xml_list->Add(" <params> ");
xml_list->Add("  <param><value><int>1</int></value></param>");
xml_list->Add("  <param><value><string>newtehnik</string></value></param>");
xml_list->Add("  <param><value><string>newtehnik</string></value></param>");
xml_list->Add("  <param>");
xml_list->Add("   <struct>");
xml_list->Add("    <member><name>title</name>");
xml_list->Add("     <value>");
xml_list->Add("      <string>title</string>");
xml_list->Add("     </value>");
xml_list->Add("    </member>");
xml_list->Add("    <member>");
xml_list->Add("     <name>description</name>");
xml_list->Add("     <value>");
xml_list->Add("      <string>Тут должен быть текст кириллицей</string>");
xml_list->Add("     </value>");
xml_list->Add("    </member>");
xml_list->Add("   </struct>");
xml_list->Add("   </value>"); // где открывающий тег ?
xml_list->Add("  </param>");
xml_list->Add("  <param>");
xml_list->Add("    <value>");
xml_list->Add("     <boolean>1</boolean>");
xml_list->Add("    </value>");
xml_list->Add("  </param>");
xml_list->Add(" </params>");
xml_list->Add("</methodCall>");    
// в данном случае отступы в xml лучше убрать, наверное,
// и записать все одной строкой
TStringStream *stm = new TStringStream();
if (stm==NULL) {
  return;
}
xml_list->SaveToStream(stm);
2
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 9
04.05.2012, 13:02  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Можно обойтись без файла, сформировав xml в Memo или вообще в StringList и сохранив SaveToStream(stream), потом поток отправлять.

Добавлено через 13 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
std::auto_ptr<TStringList>xml_list(new TStringList);
// или TStringList *xml_list = new TStringList;
// потом не забыть delete xml_list;
xml_list->Add("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
xml_list->Add("<methodCall>");
xml_list->Add(" <methodName>metaWeblog.newPost</methodName>");
xml_list->Add(" <params> ");
xml_list->Add("  <param><value><int>1</int></value></param>");
xml_list->Add("  <param><value><string>newtehnik</string></value></param>");
xml_list->Add("  <param><value><string>newtehnik</string></value></param>");
xml_list->Add("  <param>");
xml_list->Add("   <struct>");
xml_list->Add("    <member><name>title</name>");
xml_list->Add("     <value>");
xml_list->Add("      <string>title</string>");
xml_list->Add("     </value>");
xml_list->Add("    </member>");
xml_list->Add("    <member>");
xml_list->Add("     <name>description</name>");
xml_list->Add("     <value>");
xml_list->Add("      <string>Тут должен быть текст кириллицей</string>");
xml_list->Add("     </value>");
xml_list->Add("    </member>");
xml_list->Add("   </struct>");
xml_list->Add("   </value>"); // где открывающий тег ?
xml_list->Add("  </param>");
xml_list->Add("  <param>");
xml_list->Add("    <value>");
xml_list->Add("     <boolean>1</boolean>");
xml_list->Add("    </value>");
xml_list->Add("  </param>");
xml_list->Add(" </params>");
xml_list->Add("</methodCall>");    
// в данном случае отступы в xml лучше убрать, наверное,
// и записать все одной строкой
TStringStream *stm = new TStringStream();
if (stm==NULL) {
  return;
}
xml_list->SaveToStream(stm);
Спасибо за помощь
Всё шикарно работает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.05.2012, 13:02
Помогаю со студенческими работами здесь

XML RPC запрос
Есть код на руби, мне нужно запилить его на C#. Собственно, в коде то всё яснопонятно, но я всё не могу найти примере как на шарпе это...

XML-RPC via HTTPWebRequest
Доброго времени, уважаемые форумчане. Пишу программу-пингатор блогов. Не могу грамотно выполнить XML-RPC запрос на сервер. Привожу код: ...

проблема с установкой XML-RPC
Всем привет! Помогите разобраться с установкой и подключением класса XML-RPC в php5! 12 часов потратил на это дело, перелопатил все...

XML RPC Web service
Добрый день уважаемые форумчане. Мне нужна Ваша помощь. Мною написан кусок кода на php (xmlrpc), который соединяется с базой...

Загружаем изображения с XML-RPC
Здравствуйте, пытаюсь загрузить несколько картинок через протокол XML-RPC на сайт WordPress. Получается загрузить одну, что бы загрузить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru