Добрый день.
У меня есть XML-файл в кодировке win-1251, который я загружаю в такую таблицу:
create sequence seq_xdoc;
create table xdoc
(
id integer not null default nextval('seq_xdoc'::regclass),
xmldoc xml,
primary key (id)
);
XML-файл такой:
<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<!-- информация о сотруднике -->
<employee>
<fio>
<first_name>Иванов</first_name>
<last_name>Иван</last_name>
<second_name>Иванович</second_name>
</fio>
<post>доцент</post>
<work_address>
<postal-code>000000</postal-code>
<city>Город</city>
<street>ул. Советская</street>
<house_number>00</house_number>
<email>xxx@xxx.xx.xx</email>
<telephone code="0-0000">00-00-00</telephone>
</work_address>
</employee>
Я вставляю его в поле таблицы через pgAdmin III. Использую postgresql-9.3.6-1-windows.
Мне нужно делать такие запросы:
select xpath('//first_name/text()',xmldoc) from xdoc;
select xpath('/employee/fio/first_name/text()',xmldoc) from xdoc;
У меня выдается ошибка:
ОШИБКА: could not parse XML document
DETAIL: input conversion failed due to input error, bytes 0x98 0xD0 0xA1 0x3C
input conversion failed due to input error, bytes 0x98 0xD0 0xA1 0x3C
encoder error
line 9: Premature end of data in tag post line 9
<post>доцент кафедры РњРћР
Как я понял проблема в кодировке XML-документа (win-1251).
Как можно выполнить конвертацию непосредственно в запросе?
Чтобы не конвертировать XML-документ?
Заранее спасибо.