powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / работа с XML
22 сообщений из 22, страница 1 из 1
работа с XML
    #35815651
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
Памагите! В смысле подскажите плиз куда рыть:

IDS 11.50.FC2DE
MACOS X версия 10.5.6

Клиент eSQLEditor 5.17b
собственно скрипт, который дает ошибку

create table currency (code char(3),brief char(4),name char(20));
insert into currency values ('810','RUR','Росиийский рубль');
insert into currency values ('840','USD','Доллар США');
insert into currency values ('978','EUR','Евро');

create table tab01 (number serial, xdoc lvarchar(10240));

insert into tab01
select 0,genxmlquery('currency_set','select * from currency')
from systables where tabid == 1;

select idsxmlparse(xdoc) from tab01;

у меня экзистенциальный ступор - функция genxmlquery генерит XML,
который функция idsxmlparse считает кривым.

В xdoc лежит вот что:
<currency_set>
<row>
<code>810</code>
<brief>RUR </brief>
<name>Росиийский рубль </name>
</row>
<row>
<code>840</code>
<brief>USD </brief>
<name>Доллар США </name>
</row>
<row>
<code>978</code>
<brief>EUR </brief>
<name>Евро </name>
</row>
</currency_set>

Визуально в XML кривизны не вижу.
...
Рейтинг: 0 / 0
работа с XML
    #35815667
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
для того, чтобы были доступны функции XML делаю команду

onmode -p +1 idsxmlvp
...
Рейтинг: 0 / 0
работа с XML
    #35815668
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему lvarchar ? вроде clob должен быть
...
Рейтинг: 0 / 0
работа с XML
    #35815720
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
Журавлев Денис,

create table tab02 (number serial, xdoc clob);

insert into tab02
select 0,genxmlquery('currency_set','select * from currency')
from systables where tabid == 1;

ошибка -937
...
Рейтинг: 0 / 0
работа с XML
    #35815729
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genxmlquery clob ()
...
Рейтинг: 0 / 0
работа с XML
    #35815740
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
insert into tab02
select 0,genxmlqueryclob('currency_set','select * from currency')
from systables where tabid == 1;

12:36:37 00:00:00.031 3 -9810 SQL error: Smart-large-object error.
-12053 Smart Large Objects: No sbspace number specified.
...
Рейтинг: 0 / 0
работа с XML
    #35815756
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cpr
-12053 Smart Large Objects: No sbspace number specified.
эта ошибка потому что нет sbspace

В первом варианте отпарсить нельзя, потому что кодировка фиг знает какая, заголовка нет ,попробуй genXMLQueryHdr
...
Рейтинг: 0 / 0
работа с XML
    #35815787
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
drop table tab01;
create table tab01(number serial, xdoc lvarchar(10240));

insert into tab01
select 0,genxmlqueryhdr('currency_set','select * from currency')
from systables where tabid == 1;

select idsxmlparse(xdoc)
from tab01;

в результате все то же самое
12:48:29 00:00:00.015 331 -8355 SQL error: Get SQL error message failure, reason -1228
Please see Informix error message documentation
...
Рейтинг: 0 / 0
работа с XML
    #35815793
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
если с заголовком, то получается вот что

<?xml version="1.0" encoding="ru_RU.866" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<currency_set>
<row>
<code>810</code>
<brief>RUR </brief>
<name>Росиийский рубль </name>
</row>
<row>
<code>840</code>
<brief>USD </brief>
<name>Доллар США </name>
</row>
<row>
<code>978</code>
<brief>EUR </brief>
<name>Евро </name>
</row>
</currency_set>
...
Рейтинг: 0 / 0
работа с XML
    #35815805
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а просто
select 0,genxmlquery('currency_set','select * from currency')
from systables where tabid == 1;

что говорит?
...
Рейтинг: 0 / 0
работа с XML
    #35815820
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
Журавлев Дениса просто
select 0,genxmlquery('currency_set','select * from currency')
from systables where tabid == 1;

что говорит?

все хорошо говорит

(constant) (expression)
0 "<?xml version=""1.0"" encoding=""ru_RU.866"" ?>
<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"">
<currency_set>
<row>
<code>810</code>
<brief>RUR </brief>
<name>Росиийский рубль </name>
</row>
<row>
<code>840</code>
<brief>USD </brief>
<name>Доллар США </name>
</row>
<row>
<code>978</code>
<brief>EUR </brief>
<name>Евро </name>
</row>
</currency_set>"

это резалт в exel, потом через клипборд
...
Рейтинг: 0 / 0
работа с XML
    #35815844
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
проблема однако похоже в кодировке

скрипт без русских букв (и заголовка) сработал

drop table currency;
create table currency (code char(3),brief char(4),name char(20));
insert into currency values ('810','RUR','Rubl');
insert into currency values ('840','USD','Dollar');
insert into currency values ('978','EUR','Euro');

drop table tab01;
create table tab01(number serial, xdoc lvarchar(10240));

insert into tab01
select 0,genxmlquery('currency_set','select * from currency')
from systables where tabid == 1;

select idsxmlparse(xdoc)
from tab01;


Это получается, что если у меня БД с 866 , то XML работать не будет?
...
Рейтинг: 0 / 0
работа с XML
    #35815854
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
Подскажите как DB_LOCALE определить, чтобы создать юникодную БД?
...
Рейтинг: 0 / 0
работа с XML
    #35816001
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cpr
Это получается, что если у меня БД с 866 , то XML работать не будет?Получается в саппорт надо. С другой стороны нафиг вообще xml внутри субд.
...
Рейтинг: 0 / 0
работа с XML
    #35816050
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
Журавлев Денисcpr
Это получается, что если у меня БД с 866 , то XML работать не будет?Получается в саппорт надо. С другой стороны нафиг вообще xml внутри субд.

Это ж я девелоперэдишн скчал напопробовать, так что с сапортом пока мимо.

XML мне как раз нужен не внутри, а для передачи в другую БД.
...
Рейтинг: 0 / 0
работа с XML
    #35816394
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я делаю так, ибо остальные варианты источники геморроев

Код: plaintext
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.
44.
45.
46.
47.
48.
49.
xml.vbs

On Error resume next

set oXML=CreateObject("Microsoft.XMLDOM")
set pi=oXML.createProcessingInstruction("xml"," version='1.0' encoding='UTF-8'")
oXML.appendChild(pi)

set rootnode=oXML.createElement("query")
oXML.appendChild(rootnode)

set cx=createobject("ADODB.Connection")
if Err.Number<> 0  then
   WScript.Stdout.Write "Error on createobject ADODB.Connection"
else
   cx.connectionstring="dsn=test_odbc;uid=usr;pwd=passwd;"
   cx.open
   if Err.Number<> 0  then
      WScript.Stdout.Write "Error on connect to DB"
   else
      set cr=createobject("ADODB.Recordset")
      set cr.activeconnection=cx
      cr.open "select * from systables"
      if Err.Number<> 0  then
         WScript.Stdout.Write "Error on Select"
      else
        while cr.EOF=false
          set rownode=oXML.createElement("row")
          rootnode.appendChild(rownode)
          for each x in cr.fields
            set fieldnode=oXML.createElement(x.name)
            fieldnode.text=x.value
            rownode.appendChild(fieldnode)
            Set fieldnode = nothing
            if Err.Number<> 0  then
              WScript.Stdout.Write "Errr"
            else
            end if
          next
          Set rownode = nothing  
          cr.MoveNext
        wend
      end if
      cr.close
   end if
   cx.close
end if
oXML.save("foobar.xml")


cscript /nologo xml.vbs
...
Рейтинг: 0 / 0
работа с XML
    #35816485
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cprПодскажите как DB_LOCALE определить, чтобы создать юникодную БД?
у нас ru_ru.utf8
...
Рейтинг: 0 / 0
работа с XML
    #35816695
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
Журавлев Денис,

не знаю насчет геммороя, но уменя исходное требование - использовать SPL.
...
Рейтинг: 0 / 0
работа с XML
    #35816711
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
Журавлев Денис
В первом варианте отпарсить нельзя, потому что кодировка фиг знает какая, заголовка нет ,попробуй genXMLQueryHdr

А вот кстати почему нельзя?
Все элементы имеют имена в базовом asci наборе. А содержимое элементов на парсинг не влияет.
...
Рейтинг: 0 / 0
работа с XML
    #35816731
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cprА вот кстати почему нельзя?
Все элементы имеют имена в базовом asci наборе. А содержимое элементов на парсинг не влияет.содержимое мешает отличить utf-8 от utf-16
...
Рейтинг: 0 / 0
работа с XML
    #35819802
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
И все равно я чего то не понимаю.

функция genxmlqueryhdr генерит вот что

<?xml version="1.0" encoding="ru_RU.866" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<currency_set>
<row>
<code>810</code>
<brief>RUR </brief>
<name>Rubl </name>
</row>
<row>
<code>840</code>
<brief>USD </brief>
<name>Dollar </name>
</row>
<row>
<code>978</code>
<brief>EUR </brief>
<name>Euro </name>
</row>
</currency_set>

Если из документа убрать строку
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
и исправить ru_RU.866 на Cp866
то документ well-formed.
Может я чего то не понимаю, но зачем генерить неправильный заголовок?
...
Рейтинг: 0 / 0
работа с XML
    #35819879
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cpr
Может я чего то не понимаю, но зачем генерить неправильный заголовок?Индусы.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / работа с XML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]