|
Помогите распарсить XML///
|
|||
---|---|---|---|
#18+
День добрый. SyBase ASA 12 Поставлена следующая задачка... Вытащить значения CDATA и приведенного XML: В интерактиве выполняю следующий код begin declare @xml xml; declare @name_post varchar(20); declare @B_number varchar(100); set @xml = '<EXTERNAL_DELIVERY> <NAME>QIWI POST</NAME> <BARCODE_NUMBER>10905200065651</BARCODE_NUMBER> <BARCODE_STANDARD>EAN-128</BARCODE_STANDARD> <ADDITIONAL_DATA> <DATA code="PACK_TYPE" title="Типоразмер"><![CDATA[C]]></DATA> <DATA code="TERMINAL_CODE" title="Код терминала"><![CDATA[MSC_039]]></DATA> </ADDITIONAL_DATA> </EXTERNAL_DELIVERY>'; SELECT * into #Orders FROM OPENXML(@xml, '/EXTERNAL_DELIVERY/ADDITIONAL_DATA/DATA') WITH ("id" integer '@mp:id', parent_id integer '../@mp:id', code varchar(50) '@code', title varchar(50) '@title', DATA varchar(150)'DATA'); select * from #Orders; end; как видно значание 1-го CDATA это 'С', второго 'MSC_039'. После селекта получаю 2 строки Все замечательно, но как сделать, чтобы и значения CDATA были тут же. id, parent_id, code, title, DATA 268, 236, 'PACK_TYPE', 'Типоразмер', 355, 236, 'TERMINAL_CODE', 'Код терминала', Заранее благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 14:21 |
|
Помогите распарсить XML///
|
|||
---|---|---|---|
#18+
Разобрался, надо вот так: begin declare @xml xml; declare @name_post varchar(20); declare @B_number varchar(100); set @xml = '<EXTERNAL_DELIVERY> <NAME>QIWI POST</NAME> <BARCODE_NUMBER>10905200065651</BARCODE_NUMBER> <BARCODE_STANDARD>EAN-128</BARCODE_STANDARD> <ADDITIONAL_DATA> <DATA code="PACK_TYPE" title="Типоразмер"><![CDATA[C]]></DATA> <DATA code="TERMINAL_CODE" title="Код терминала"><![CDATA[MSC_039]]></DATA> </ADDITIONAL_DATA> </EXTERNAL_DELIVERY>'; SELECT * into #Orders FROM OPENXML(@xml, '/EXTERNAL_DELIVERY/ADDITIONAL_DATA/DATA') WITH ("id" integer '@mp:id', parent_id integer '../@mp:id', code varchar(50) '@code', title varchar(50) '@title', "DATA" varchar(150) '.'); // ставится точка и тогда читаютcя данные из CDATA текущего узла select * from #Orders; end; ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2012, 16:04 |
|
|
start [/forum/topic.php?fid=55&fpage=13&tid=2010048]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 234ms |
total: | 387ms |
0 / 0 |