powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Informix [игнор отключен] [закрыт для гостей] / Непонятки с XML
5 сообщений из 5, страница 1 из 1
Непонятки с XML
    #38457357
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос:
Код: sql
1.
2.
3.
4.
5.
6.
drop table if exists customer;
create table customer(my_id serial, my_txt char(20));
insert into customer values (0, "first");
insert into customer values (0, "second");
insert into customer values (0, "third");
SELECT idsxmlparse(genxmlschemaclob(customer, 'customer')) FROM customer;


всегда возвращает ошибку:
8355: Function (idsxmlparse) Error parsing the input XML document.

Проверял в кодировках ru_RU.8859-5, ru_RU.utf8, en_US.utf8, en_US.819
Странно, ведь сервер сам формирует XML-документ, и сам же его считает ошибочным?
Может, я что-то делаю неправильно?
...
Рейтинг: 0 / 0
Непонятки с XML
    #38458302
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение вроде бы нашел, неуклюжее, но работает:
Код: sql
1.
2.
3.
4.
 select idsxmlparse(
replace(replace(col, "ru_RU.915", "ISO8859-5"), '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">')
)
from table(genxmlqueryhdr('customer','select * from customer')) as tmptb(col)
...
Рейтинг: 0 / 0
Непонятки с XML
    #38463995
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже русские буквы проявились, что необычно для XML в Informix
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
drop table if exists customer;
create table customer(my_id serial, my_txt char(20));
insert into customer values (0, "first");
insert into customer values (0, "second");
insert into customer values (0, "third");
insert into customer values (0, "первый");
insert into customer values (0, "второй");
insert into customer values (0, "третий");
select xsltransform(
idsxmlparse(replace(replace(col, "ru_RU.915", "ISO-8859-5"), '<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">'))
,'<?xml version="1.0" encoding="ISO-8859-5"?><xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:output method="string" encoding="ISO-8859-5"/><xsl:template match="/"><xsl:for-each select="*"><xsl:value-of select="."/></xsl:for-each></xsl:template></xsl:stylesheet>'
)
from table(genxmlqueryhdr('customer','select * from customer')) as tmptb(col);


результат
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="ISO-8859-5"?>
1
first               

2
second              

3
third               

4
первый              

5
второй              

6
третий              
...
Рейтинг: 0 / 0
Непонятки с XML
    #38522387
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
victor16,

а у replace есть ограничения на длину строки?
...
Рейтинг: 0 / 0
Непонятки с XML
    #38523953
victor16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cprа у replace есть ограничения на длину строки?
Ограничения зависят от типа параметров функции и наличия свободной памяти на сервере. Я думаю, не стоит передавать в качестве параметров строку, длина которой превышает размер доступной памяти.
Для больших XML стоит использовать тип BLOB. Для него, правда, отсутствует функция replace, но ее Вы можете написать сами на C или Java. В свое время я создал на C подобную библиотеку для работы с BLOB-полями, пользуюсь до сих пор.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Непонятки с XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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