Как создать XML? C нуля!

 
0
 
Oracle
ava
VIAcom | 01.08.2005, 11:34
Не могу создать XML документ. Прочиталь и обрабтать - нормально, и примеры есть, а вот как с нуля самому через DOM документ создать - ??? одни вопросы.

Comments (9)
ava
LSD | 02.08.2005, 15:43 #
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/>
ava
VIAcom | 03.08.2005, 10:51 #
Спасибо!
ava
VIAcom | 04.08.2005, 14:05 #
Все хорошо, но значения ноды я установить все равно не могу, и еще у меня нет
dbmx_xmldom.CreateDocument('....',null,null); а есть только
domxml.NewDocument;

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

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

Очень мало примеров с записью и созданием XML, быду признателен за любые ссылки по этой теме.
ava
LSD | 10.08.2005, 14:24 #
Цитата (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, быду признателен за любые ссылки по этой теме.

К сожалению не встречал.
ava
Paradox | 28.10.2005, 07:54 #
А не могли бы для ламеров выложить описание clob_tbl smile
и еще как можно полученный документ сохранить в файл ?
ava
Paradox | 28.10.2005, 10:40 #
а как добавить атрибут и установить его значение ?
ava
LSD | 30.10.2005, 18:39 #
Цитата (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>
ava
Paradox | 31.10.2005, 08:27 #
LSD спасибо !!!
ava
Paradox | 31.10.2005, 12:45 #
Цитата
Файл где, на клиенте или на сервере?
файл на сервере
как сохранить пока что не понял
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Paradox ava  LSD   VIAcom
advanced
Submit