powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вопрос по xml
4 сообщений из 4, страница 1 из 1
вопрос по xml
    #39523033
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
подскажите, пожалуйста, вот строю xml

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
DECLARE                                                                                                                
    doc  DBMS_XMLDOM.DOMDocument;                                                                                        
    xdata  XMLTYPE;  

CURSOR xmlcur IS   
SELECT XMLROOT (XMLELEMENT("Подтв",
                      XMLATTRIBUTES('бла бла бла' as "xmlns"
                                 , gen_guid as "ИдПодтв"
                                 , 'NameFile' as "ИмяФайла"
                                 , to_char(sysdate , 'yyyy-mm-dd hh24:mi:ss')as "ДатаВремяПроверки"),
                XmlElement("РезПроверки", 
                   XMLATTRIBUTES('01' as "КодРезПроверки"
                                  , 'Ok' as "Пояснение")
                           )                            
      ), version '1.0" encoding="windows-1251')
FROM dual ;  
 
BEGIN           
    OPEN xmlcur;   
         LOOP 
           FETCH xmlcur INTO xdata;
           EXIT WHEN xmlcur%NOTFOUND;
           dbms_output.put_line(xdata.getClobVal);
           --doc := DBMS_XMLDOM.NewDOMDocument(xdata); 
           --DBMS_XMLDOM.WRITETOFILE(doc, 'XMLDIR/NameFile.xml');
         END LOOP;
    CLOSE  xmlcur;                    
END; 



Результат

Код: xml
1.
2.
3.
4.
<?xml version="1.0" encoding="windows-1251"?>
<Подтв xmlns="бла бла бла" ИдПодтв="59850C52-0530-0F6C-E053-0100007FA0F3" ИмяФайла="NameFile" ДатаВремяПроверки="2017-09-19 10:51:21">
  <РезПроверки КодРезПроверки="01" Пояснение="Ok"/>
</Подтв>


Вроде все ок

но вот когда сохраняю его

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
DECLARE                                                                                                                
    doc  DBMS_XMLDOM.DOMDocument;                                                                                        
    xdata  XMLTYPE;  

CURSOR xmlcur IS   
SELECT XMLROOT (XMLELEMENT("Подтв",
                      XMLATTRIBUTES('бла бла бла' as "xmlns"
                                 , gen_guid as "ИдПодтв"
                                 , 'NameFile' as "ИмяФайла"
                                 , to_char(sysdate , 'yyyy-mm-dd hh24:mi:ss')as "ДатаВремяПроверки"),
                XmlElement("РезПроверки", 
                   XMLATTRIBUTES('01' as "КодРезПроверки"
                                  , 'Ok' as "Пояснение")
                           )                            
      ), version '1.0" encoding="windows-1251')
FROM dual ;  
 
BEGIN           
    OPEN xmlcur;   
         LOOP 
           FETCH xmlcur INTO xdata;
           EXIT WHEN xmlcur%NOTFOUND;
           --dbms_output.put_line(xdata.getClobVal);
           doc := DBMS_XMLDOM.NewDOMDocument(xdata); 
           DBMS_XMLDOM.WRITETOFILE(doc, 'XMLDIR/NameFile.xml');
         END LOOP;
    CLOSE  xmlcur;                    
END; 



xml' ина создается без version '1.0" encoding="windows-1251' и приходится вручную открывать файл и добавлять строчку
<?xml version="1.0" encoding="windows-1251"?>
почему ?

Код: xml
1.
2.
3.
<Подтв xmlns="бла бла бла" ИдПодтв="59850C52-0530-0F6C-E053-0100007FA0F3" ИмяФайла="NameFile" ДатаВремяПроверки="2017-09-19 10:51:21">
  <РезПроверки КодРезПроверки="01" Пояснение="Ok"/>
</Подтв>
...
Рейтинг: 0 / 0
вопрос по xml
    #39523039
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде все, разобрался.
Добавил charset
Код: plsql
1.
DBMS_XMLDOM.WRITETOFILE(doc, 'XMLDIR/filename.xml','windows-1251');


и <?xml version="1.0" encoding="windows-1251"?>
вставился в xml
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
вопрос по xml
    #39931433
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему вместо '<' и '>' '& lt' и '& gt' ?


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Connected to Oracle Database 11g Release 11.2.0.1.0 
Connected as supermag@//192.168.1.201/DBOFFICE

SQL> 
SQL> declare
  2    doc DBMS_XMLDOM.DOMDocument;
  3    xdata  XMLTYPE;
  4  begin
  5    for xdata in (
  6        select XMLELEMENT("item",
  7                  XMLELEMENT("article", '123') || chr(13) ||XMLELEMENT("name", 'наме')
  8               ) xml
  9          from dual
 10  
 11        ) loop
 12    doc := DBMS_XMLDOM.NewDOMDocument(xdata.xml);
 13    DBMS_XMLDOM.WRITETOFILE(doc, 'TEMP/NameFile.xml', 'windows-1251');
 14  end loop;
 15  end;
 16  /

PL/SQL procedure successfully completed

SQL> host type c:\temp\NameFile.xml;
SQL> -- че-то не сработало



Код: xml
1.
2.
3.
<?xml version="1.0" encoding="WINDOWS-1251"?>
<item>&lt;article&gt;123&lt;/article&gt;
&lt;name&gt;наме&lt;/name&gt;</item>



Потому что || делает строку, а если в строке встречаются служебные символы, они маскируются.
Правильно:

Код: plsql
1.
2.
3.
select XMLELEMENT("item",
                XMLELEMENT("article", '123'), XMLELEMENT("name", 'наме')
             ) xml
...
Рейтинг: 0 / 0
вопрос по xml
    #39931486
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm
Потому что ||
Не в первоначальную тему, да и способ демонстрации величия проблемы неявных преобразований с привлечением xml и записи в файл излишне витиеватый.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / вопрос по xml
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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