Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать XML? C нуля! Через xmlDOM не используя xmlQuery. 
:(
    Опции темы
VIAcom
Дата 1.8.2005, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 2.5.2005
Где: г. Казань, Емноно вский Хутор.

Репутация: нет
Всего: нет



Не могу создать XML документ. Прочиталь и обрабтать - нормально, и примеры есть, а вот как с нуля самому через DOM документ создать - ??? одни вопросы.


PM MAIL ICQ   Вверх
LSD
Дата 2.8.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Код
declare 
  doc dbms_xmldom.DOMDocument;
  root_element dbms_xmldom.DOMElement;
  root_node dbms_xmldom.DOMNode;
  doc_node dbms_xmldom.DOMNode;
  c Clob;
begin
  doc := dbms_xmldom.createDocument('http://www.w3.org/2001/XMLSchema', null, null);
  dbms_xmldom.setVersion(doc, '1.0');
  root_element := dbms_xmldom.createElement(doc, 'RootNode');
  root_node := dbms_xmldom.makeNode(root_element);
  doc_node := dbms_xmldom.makeNode(doc);
  doc_node := dbms_xmldom.appendChild(doc_node, root_node);

  dbms_lob.createtemporary(c, true, dbms_lob.session);
  dbms_xmldom.writeToClob(doc, c);
  insert into clob_tbl (data) values (c);
end;

создаст такой вот XML:
Код
<?xml version="1.0"?>
<RootNode/>



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
VIAcom
Дата 3.8.2005, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 2.5.2005
Где: г. Казань, Емноно вский Хутор.

Репутация: нет
Всего: нет



Спасибо!
PM MAIL ICQ   Вверх
VIAcom
Дата 4.8.2005, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 2.5.2005
Где: г. Казань, Емноно вский Хутор.

Репутация: нет
Всего: нет



Все хорошо, но значения ноды я установить все равно не могу, и еще у меня нет
dbmx_xmldom.CreateDocument('....',null,null); а есть только
domxml.NewDocument;

что то я совершенно не просек, какая разница м/у Document/Element/Node если они все так легко друг в друга конвертятся?

Это уже так до кучи, в принципе я уже задачку решил, но несколько по другому, а хотелось бы целиком через DOM! Но тут все так замуторено, прочитал доки по ДОМ, и примеры, так там совершенно не освещен вопрос создания нового документа, только работа с уже имеющимися.

Очень мало примеров с записью и созданием XML, быду признателен за любые ссылки по этой теме.
PM MAIL ICQ   Вверх
LSD
Дата 10.8.2005, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Цитата(VIAcom @ 4.8.2005, 15:05)
еще у меня нет
dbmx_xmldom.CreateDocument('....',null,null); а есть только
domxml.NewDocument;

Какая версия Oracle?

Цитата(VIAcom @ 4.8.2005, 15:05)
значения ноды я установить все равно не могу

Это делается так:
Код
declare 
  doc dbms_xmldom.DOMDocument;
  root_element dbms_xmldom.DOMElement;
  root_node dbms_xmldom.DOMNode;
  node dbms_xmldom.DOMNode;
  data_node dbms_xmldom.DOMText;
  c Clob;
begin
  doc := dbms_xmldom.createDocument('http://www.w3.org/2001/XMLSchema', null, null);
  dbms_xmldom.setVersion(doc, '1.0');
  root_element := dbms_xmldom.createElement(doc, 'RootNode');
  root_node := dbms_xmldom.makeNode(root_element);
  node := dbms_xmldom.makeNode(doc);
  node := dbms_xmldom.appendChild(node, root_node);
  
  data_node := dbms_xmldom.createTextNode(doc, 'XML - Extensible Markup Language');
  node := dbms_xmldom.makeNode(data_node);
  node := dbms_xmldom.appendChild(root_node, node);

  dbms_lob.createtemporary(c, true, dbms_lob.session);
  dbms_xmldom.writeToClob(doc, c);
  insert into clob_tbl (data) values (c);
end;

в результате получим
Код
<?xml version="1.0"?>
<RootNode>XML - Extensible Markup Language</RootNode>


Цитата(VIAcom @ 4.8.2005, 15:05)
что то я совершенно не просек, какая разница м/у Document/Element/Node если они все так легко друг в друга конвертятся?

Document, Element, TextNode и т.д. унаследованны от Node, поэтому они и конвертятся в него, просто для типов PL/SQL нет наследования вот и приходится конвертировать явно. Это все описывается в спецификации DOM.

Цитата(VIAcom @ 4.8.2005, 15:05)
Очень мало примеров с записью и созданием XML, быду признателен за любые ссылки по этой теме.

К сожалению не встречал.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Paradox
Дата 28.10.2005, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: 3
Всего: 1



А не могли бы для ламеров выложить описание clob_tbl smile
и еще как можно полученный документ сохранить в файл ?


--------------------
---
PM MAIL WWW   Вверх
Paradox
Дата 28.10.2005, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: 3
Всего: 1



а как добавить атрибут и установить его значение ?


--------------------
---
PM MAIL WWW   Вверх
LSD
Дата 30.10.2005, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Цитата(Paradox @ 28.10.2005, 08:54)
А не могли бы для ламеров выложить описание clob_tbl

Да там вообщем то ничего особого, у меня было 2 столбца: первичный ключ и столбец с clob
Код
-- Create table
create table CLOB_TBL
(
  ID RAW(16) default sys_guid() not null,
  DATA CLOB
);
-- Create/Recreate primary, unique and foreign key constraints 
alter table CLOB_TBL add constraint CLOB_TBL_PK primary key (ID);


Цитата(Paradox @ 28.10.2005, 08:54)
и еще как можно полученный документ сохранить в файл ?

Файл где, на клиенте или на сервере?

Цитата(Paradox @ 28.10.2005, 11:40)
а как добавить атрибут и установить его значение ?

С помощью dbms_xmldom.setAttribute():
Код
declare    
  doc                 dbms_xmldom.DOMDocument;    
  root_element        dbms_xmldom.DOMElement;    
  root_node           dbms_xmldom.DOMNode;    
  node                dbms_xmldom.DOMNode;    
  data_node           dbms_xmldom.DOMText;    
  c Clob;    
begin    
  doc := dbms_xmldom.createDocument('http://www.w3.org/2001/XMLSchema', null, null);    
  dbms_xmldom.setVersion(doc, '1.0');    
  root_element := dbms_xmldom.createElement(doc, 'RootNode');    
  dbms_xmldom.setAttribute(root_element, 'SomeAttribute', 'SomeAttributeValue');
  root_node := dbms_xmldom.makeNode(root_element);    
  node := dbms_xmldom.makeNode(doc);    
  node := dbms_xmldom.appendChild(node, root_node);    
  
    
  data_node := dbms_xmldom.createTextNode(doc, 'XML - Extensible Markup Language');    
  node := dbms_xmldom.makeNode(data_node);    
  node := dbms_xmldom.appendChild(root_node, node);    
  
  
  dbms_lob.createtemporary(c, true, dbms_lob.session);    
  dbms_xmldom.writeToClob(doc, c);    
  insert into clob_tbl (data) values (c);    
end;

Получим:
Код
<?xml version="1.0"?>
<RootNode SomeAttribute="SomeAttributeValue">XML - Extensible Markup Language</RootNode>


Это сообщение отредактировал(а) LSD - 31.10.2005, 14:23


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Paradox
Дата 31.10.2005, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: 3
Всего: 1



LSD спасибо !!!


--------------------
---
PM MAIL WWW   Вверх
Paradox
Дата 31.10.2005, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: 3
Всего: 1



Цитата
Файл где, на клиенте или на сервере?
файл на сервере
как сохранить пока что не понял


--------------------
---
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.1098 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.