Xmldom.writetoClob()

Hi ,
I've some problem saving back my xml document in Clob:
If I performe the procedure
xmldom.writetobuffer(DomDocument,variable_of_output);
the variable_of_output in varchar2 is well valorized.
Instead
If I performe the procedure
xmldom.writetoClob(DomDocument,variable_of_output);
where the variable_of_output is Clob
THE CODE STOP. The problem is present Even if i inizialize variable_of_output:=empty_clob();
Answer my question,Please.
Thanks you

Hi,
It probably depends on your database version. If your using 9i, you should use dbms_xmldom instead of xmldom. Furthermore, you might consider to use the following code (instead of the empty clob code):
DECLARE
t_doc DBMS_XMLDOM.DOMDocument;
t_clob CLOB;
BEGIN
... do stuff to fill t_doc
DBMS_LOB.createTemporary(t_clob, FALSE);
DBMS_XMLDOM.writeToClob(t_doc, t_clob);
DBMS_XMLDOM.freeDocument(t_doc);
... do stuff with t_clob
DBMS_LOB.freeTemporary(t_clob);
END;
I'm certain that dbms_xmldom replaces xmldom (v9.2+), I only can't remember the URL which says so...
Kind regards,
Michiel

Similar Messages

  • Error While Writing DOM to a CLOB i.e. xmldom.writeToClob

    I am running into error while writng and reading from a clob. The Sample Code is as follows :
    declare
    p xmlparser.Parser;
    doc xmldom.DOMDocument;
    i_tmp CLOB;
    i_tmp1 CLOB;
    i_buffer varchar2(32767);
    i_amount pls_integer;
    begin
    p := xmlParser.NewParser;
    xmlparser.setbaseDir(p,'/sqlcom/inbound');
    xmlparser.setValidationMode(p, TRUE);
    xmlparser.showwarnings(p, TRUE);
    xmlparser.seterrorlog(p, '/sqlcom/inbound/veshaal.err');
    xmlparser.parse(p,'/sqlcom/inbound/mpoi.xml');
    doc := xmlparser.getDocument(p);
    dbms_lob.createtemporary(i_tmp1,true,dbms_lob.session);
    xmldom.writeToClob(doc,i_tmp1);
    xmldom.writeToFile(doc,'/sqlcom/inbound/veshaal_out.xml');
    dbms_lob.createtemporary(i_tmp,true,dbms_lob.session);
    xmldom.writeTobuffer(doc,i_buffer);
    dbms_lob.write(i_tmp,length(i_buffer),1,i_buffer);
    i_amount := dbms_lob.getLength(i_tmp);
    dbms_lob.read(i_tmp,i_amount,1,i_buffer);
    dbms_lob.freetemporary(i_tmp1);
    commit;
    exception
    when others then
    dbms_lob.freetemporary(i_tmp1);
    dbms_output.put_line(SQLERRM);
    end;
    The oracle Error is as follows:
    declare
    ERROR at line 1:
    ORA-03113: end-of-file on communication channel
    ORA-24323: value not allowed
    Error accessing package DBMS_APPLICATION_INFO
    ERROR:
    ORA-03114: not connected to ORACLE
    The above code works while I try to write to a buffer or a file using xmldom.writeToFile or xmldom.writeToBuffer.
    The xmlparser v2 is running inside the 8i ( 8.1.5.0. ) database.
    The alert file has the following entry :
    Errors in file /home/applrt/db/superbwl/log/superbwl_ora_2371.trc:
    ORA-07445: exception encountered: core dump [EE1F05DC] [SIGSEGV] [Address not mapped to object] [0] [] []
    Any help will be appreciated.
    Thanks
    null

    UTL_FILE comes as part of the database, you shouldn't have to install it, and you most certainly shouldn't install it as SCOTT. System packages should be installed using a system user such as sys.
    Firstly, I would suggest dropping the UTL_FILE package from your scott schema and then logging on as sys and granting execute permission on UTL_FILE to the scott user.
    Secondly...
    The UTL_FILE_DIR parameter has been deprecated by oracle in favour of direcory objects because of it's security problems.
    The correct thing to do is to create a directory object e.g.:
    CREATE OR REPLACE DIRECTORY mydir AS 'c:\myfiles';Note: This does not create the directory on the file system. You have to do that yourself and ensure that oracle has permission to read/write to that file system directory.
    Then, grant permission to the users who require access e.g....
    GRANT READ,WRITE ON DIRECTORY mydir TO myuser;Then use that directory object inside your FOPEN statement e.g.
    fh := UTL_FILE.FOPEN('MYDIR', 'myfile.txt', 'r');Note: You MUST specify the directory object name in quotes and in UPPER case for this to work as it is a string that is referring to a database object name which will have been stored in uppercase by default.

  • Xmldom.writetoclob hanging forever when writing a domnode to a temp clob

    Hi
    Wondering has anyone come across anything similar (or know a work around)
    1. Basically the the procedure below loads an XML file. (OK)
    2. Removes reference to external dtd, ref was causing and error (OK)
    3. Parses the XML (OK)
    4. Gets a list of the "item" tags (OK) - should be up to 500 item elements in XML
    5. Loops on all elements
    a. writes node to temp clob *(PROBLEM HERE)*
    b. Creates xmltype from clob (OK)
    c. transforms xmltype and assigns to another xmltype (OK)
    d. inserts new xmltype (OK)
    This procedure is used by a threaded os java app to load thousands of files to db.
    It works fine 99% of the time but for some files the procedure is hanging at (5.a : write domnode to clob using xmldom.writetoclob)
    I am absolutely sure the problem is due to the characters in the domnode as all files that have hung on processing contain these bizarre characters,
    the db character set is Unicode AL32UTF8 so it should be able to handle almost anything, saying that, if the it is a prob with the characters then why does
    the loadclobfromfile procedure succeed.
    Developed on Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit
    I have no prob rejecting node and continue processing but procedure just hangs and i have to kill the thread on the os.
    Is there a way to
    1. Test for invalid AL32UTF8 chars and skip on error.
    or
    2. Get around the xmldom.writetoclob procedure and create an xmltype from the xmldom.domnode (i tried to convert domnode -> domdocument -> xmltype, no joy)
    or
    Open to suggestions
    PROCEDURE
    PROCEDURE process_blog_xml_file (
          p_file_name     IN   VARCHAR2,
          p_insert_date   IN   VARCHAR2,
          p_dir           IN   VARCHAR2 DEFAULT NULL
       IS
          newsurl        VARCHAR2 (80);
          parser         xmlparser.parser;
          newsxml        xmldom.domdocument;
          titles         xmldom.domnodelist;
          titles_found   NUMBER;
          curnode        xmldom.domnode;
          textchild      xmldom.domnode;
          dest_clob      CLOB;
          l_temp_clob    CLOB;
          src_clob       BFILE         := BFILENAME (g_zip_file_dir, p_file_name);
          dst_offset     NUMBER             := 1;
          src_offset     NUMBER             := 1;
          lang_ctx       NUMBER             := DBMS_LOB.default_lang_ctx;
          warning        NUMBER;
          l_xml          XMLTYPE;
          xsldata        XMLTYPE;
          xmldata        XMLTYPE;
          l_dir          VARCHAR2 (1000);
       BEGIN
          LOG (   'Start Processing file '
               || p_file_name
               || ' from zip '
               || p_insert_date
          IF p_dir IS NULL
          THEN
             SELECT directory_path
               INTO l_dir
               FROM all_directories
              WHERE directory_name = g_zip_file_dir;
          ELSE
             l_dir := p_dir;
          END IF;
          IF g_xsl_clob IS NULL
          THEN
             init_xsl_clob;
          END IF;
          com_polecat_xmldb_utils.set_load_date
                                      (TO_DATE (REPLACE (REPLACE (p_insert_date,
                                                         '.zip',
                                                'DD-MM-YYYY'
          LOG ('ITEM.Loaddate set : ' || com_polecat_xmldb_utils.get_load_date);
          xsldata := XMLTYPE.createxml (g_xsl_clob);
          LOG ('Read xsl file to clob');
          DBMS_LOB.OPEN (src_clob, DBMS_LOB.lob_readonly);
          DBMS_LOB.createtemporary (dest_clob, TRUE);
          DBMS_LOB.loadclobfromfile (dest_lob          => dest_clob,
                                     src_bfile         => src_clob,
                                     amount            => DBMS_LOB.getlength
                                                                         (src_clob),
                                     dest_offset       => dst_offset,
                                     src_offset        => src_offset,
                                     bfile_csid        => NLS_CHARSET_ID
                                                                       ('AL32UTF8'),
                                     lang_context      => lang_ctx,
                                     warning           => warning
          LOG ('Read xml file to clob');
          DBMS_LOB.CLOSE (src_clob);
          parser := xmlparser.newparser;
          dest_clob := REPLACE (dest_clob, g_blog_dtd_remove, '');
          LOG ('Parse xml ');
          xmlparser.parseclob (parser, dest_clob);
          DBMS_LOB.freetemporary (dest_clob);
          newsxml := xmlparser.getdocument (parser);
          xmlparser.freeparser (parser);
          titles := xmldom.getelementsbytagname (newsxml, 'item');
          LOG ('Load  blogs items to ITEM table. ');
          FOR j IN 1 .. xmldom.getlength (titles)
          LOOP
             curnode := xmldom.item (titles, j - 1);
             DBMS_LOB.freetemporary (l_temp_clob);
             DBMS_LOB.createtemporary (l_temp_clob, TRUE);
             LOG ('write node to temp clob ' || j);
             xmldom.writetoclob (curnode, l_temp_clob);                                              <-- Hanging Here
             LOG ('create xml type from clob ' || j);
             l_xml := XMLTYPE.createxml (l_temp_clob);
             LOG ('apply xsl transform to xml ' || j);
             xmldata := l_xml.transform (xsldata);
             LOG ('Insert to item table  ' || j);
             BEGIN
                INSERT INTO item
                     VALUES (xmldata);
             EXCEPTION
                WHEN OTHERS
                THEN
                   LOG ('Error::  ' || SQLERRM);
             END;
          END LOOP;
          xmldom.freedocument (newsxml);
          LOG (   'Finished Processing file '
               || p_file_name
               || ' from zip '
               || p_insert_date
       EXCEPTION
          WHEN OTHERS
          THEN
             LOG (SQLERRM);
       END;note variables starting with g_ are defined in package spec
    Cheers
    Ian
    Edited by: user3604054 on 01-Apr-2010 06:52
    Edited by: user3604054 on 01-Apr-2010 14:57
    Edited by: user3604054 on 01-Apr-2010 15:00
    Edited by: user3604054 on 01-Apr-2010 15:00
    Edited by: user3604054 on 01-Apr-2010 15:05
    Edited by: user3604054 on 01-Apr-2010 15:06

    2. Get around the xmldom.writetoclob procedure and create an xmltype from the xmldom.domnode (i tried to convert domnode -> domdocument -> xmltype, no joy) Which version of Oracle (4 digits)?
    Also look in the FAQ in the upper right for how to use the tag to wrap PL/SQL to retain formatting to make it easier for all to read.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Problem with special characters and xmldom.writetoclob

    Hi!
    I have a problem with oracle parser in pl/sql.
    My situation:
    i have a clob with valid xml with for example decoded characters:
    (spaces between & and # are for good representing characters by browser - in really there is no spaces)
    <xml>
    <any><![CDATA[ & #187; ]]> text <![CDATA[ & #187; ]]></any>
    </xml>
    i read this xml from clob, parse it and put into another clob by using
    xmldom.writetoclob procedure.
    And in second clob i have"
    <xml>
    <any>& #38;#187; text & #38;#187; </any>
    </xml>
    (ampersand is representing as & #38; !) Why there is not the cdata sections ?
    Why the value of these sections changed?
    Any ideas? I'm using newset xdk (9202) in 8.1.7.3 database.
    Please help!

    Hi John,
    According to your description, my understanding is that the Author showed incorrect character in SharePoint 2013 search result page.
    I tested the same scenario per your post in my environment, and the Müller showed correctly in SharePoint search result page.
    I recommend to reset the index in Search Service Application and run a full crawl to see if the issue still occurs.
    Best regards.
    Thanks
    Victoria Xia
    TechNet Community Support

  • Potential problem with XMLDOM.writeToClob()

    I'm really hoping that someone can help me with this. Last fall, wrote some code that used XMLDOM to build a document and send it to a web service. I remember having problems with WriteToBuffer and WriteToClob during my development efforts, which I thought were successfully resolved. Now it looks like the problem may be occurring at a client who recently upgraded to use this code. I can't get this to fail in-house, so I can't do much debugging on it. So I'm hoping that someone else has come across a problem like this and remembers what they did to fix it.
    Basically, what happened was, WriteToClob (or sometimes WriteTuBuffer) didn't return anything, even though the DOM document was not empty. I remember going back and forth between WriteToBuffer and WriteToClob, trying to get it resolved. But I don't remember specifically finding any "magic bullet". Here's what I currently have in the code:
    DBMS_LOB.createtemporary (v_source_data, TRUE);
    DBMS_LOB.OPEN (v_source_data, DBMS_LOB.lob_readwrite);
    xmldom.writetoclob (v_main_doc, v_source_data);
    DBMS_LOB.CLOSE (v_source_data);
    Has anyone had a similar problem, and remember what the fix was? I'm also not sure that the Open/Close calls are necessary. Or what TRUE means on CreateTemporary (aside from some generic comment about "buffer cache" without telling me what a buffer cache is).

    I'm really hoping that someone can help me with this. Last fall, wrote some code that used XMLDOM to build a document and send it to a web service. I remember having problems with WriteToBuffer and WriteToClob during my development efforts, which I thought were successfully resolved. Now it looks like the problem may be occurring at a client who recently upgraded to use this code. I can't get this to fail in-house, so I can't do much debugging on it. So I'm hoping that someone else has come across a problem like this and remembers what they did to fix it.
    Basically, what happened was, WriteToClob (or sometimes WriteTuBuffer) didn't return anything, even though the DOM document was not empty. I remember going back and forth between WriteToBuffer and WriteToClob, trying to get it resolved. But I don't remember specifically finding any "magic bullet". Here's what I currently have in the code:
    DBMS_LOB.createtemporary (v_source_data, TRUE);
    DBMS_LOB.OPEN (v_source_data, DBMS_LOB.lob_readwrite);
    xmldom.writetoclob (v_main_doc, v_source_data);
    DBMS_LOB.CLOSE (v_source_data);
    Has anyone had a similar problem, and remember what the fix was? I'm also not sure that the Open/Close calls are necessary. Or what TRUE means on CreateTemporary (aside from some generic comment about "buffer cache" without telling me what a buffer cache is).

  • To : Oracle Team.. xmldom.writetoclob is too slow

    HI;
    I had Oracle 8.1.6, Used the xmldom package a lot to manipulate and create xml documents ( all sizes ). then I used xmldom.writetoclob which it was giving a GREAT performance.
    I UPGRADED ti Oracle 8.1.7 and xmldom.writetoclob is TOO SLOW now, I have the same settings ( java_pool_size, share_pool, etc)
    What changed from 8.1.6 to 8.1.7 ??
    Why xmldom.writetoclob is so much slower in 8.1.7 ??
    when tranfering a 300 KB document with 8.1.6 it used to take 30 seconds, no with 8.1.7 IT TAKES 2-1/2 minutes ?????
    WHY ? ? ? ? ?
    Tahnks for any information..

    My guess is that you are creating a clob with cached set to false
    e.g
    dbms_lob.createtemporary(v_myclob,false);
    When set to false any time the clob is written to the characters are written to the disk. causing it to be slow.
    try
    dbms_lob.createtemporary(v_myclob,true);
    I had the same problem. This speeds it up significantly
    Rick Laird

  • Using xmldom.writeToClob to update xml clob corrupts clob

    We are storing an xml document in a clob field in the db. As part of a data check we need to parse the xml and possibly remove a node. I can do that, and check the results using 'xmldom.writeToBuffer'.
    When I try to write the data back to the db using 'xmldom.writeToClob' I get strange results. Data seems to be appended to the end of the clob and contains chr(13) characters at the end of each line.
    Also does anyone know if the existence of whitespace in the xml clob would cause a parse/search to be slower?
    I am new to xml and might be missing something fairly basic in the following code. Thanks in advance for any help.
    Here is some of the code:
    doc xmldom.DOMDocument;
    curNode xmldom.DOMNode;
    parentNode xmldom.DOMNode;
    theNodeList xmldom.DOMNodeList;
    str varchar2(4000);
    begin
    -- open xml_rec cursor (xml is the clob field opened for update)
    -- Loop through all item elements
    theNodeList := xmldom.getElementsByTagName(doc, 'item');
    for m in 0..xmldom.getLength(theNodeList)-1 loop
    curNode := xmldom.item(theNodeList,m);
    --perform a check and possibly delete the current node
    parentNode := xmldom.getParentNode(curNode);
    parentNode := xmldom.removechild(parentNode, curNode);
    xmldom.writeToBuffer(doc, str);
    --I check the results here and everything looks good
    xmldom.writeToClob(doc, xml_rec.xml);
    --When I check the clob the data is incorrect.
    null

    The next cod is a sample of the implementation xmldom.writeToClob used xmldom.DOMNode in the parameter of input.
    DECLARE
    XMLOut CLOB := EMPTY_CLOB();
    XMLIn Varchar2(2000);
    XSLPath Varchar2(2000);
    BEGIN
    DBMS_LOB.CREATETEMPORARY(XMLOut,TRUE); -- Give permit
    DBMS_LOB.OPEN (XMLOut, DBMS_LOB.LOB_READWRITE); --open the file of read and write
    XSLPath := '/users/gcardona/plantillas/report.xsl';
    GE_BSXMLCONVERT.createElementName('COLUMN');
    GE_BSXMLCONVERT.createElementAttribute('name', 'OUTXML');
    GE_BSXMLCONVERT.addElement();
    GE_BSXMLCONVERT.createElementName('table');
    GE_BSXMLCONVERT.createElementAttribute('name', 'X1');
    GE_BSXMLCONVERT.createElementAttribute('width', '100');
    GE_BSXMLCONVERT.addElement();
    XMLIn := GE_BSXMLCONVERT.toXML();
    XSLTranform(XMLIn, XSLPath, XMLOut);--XMLOut is a variable in out in the procedure,
    --here is where is return the file XML Process
    insert into in_prueba (ID,XML_CLOB) values (200, XMLOut);
    DBMS_LOB.CLOSE (XMLOut); -- Close File
    DBMS_LOB.FREETEMPORARY(XMLOut); --free memory
    GE_BSXMLCONVERT.clearMemory();
    commit;
    END;
    null

  • Xmldom.writetoclob give wrong character set

    I use xmldom to create a xml clob. I create document for xml as follow:
    doc := xmldom.NewDomDocument;
    xmldom.setVersion(doc, '1.0');
    xmldom.setStandalone(doc, 'no');
    xmldom.setCharSet(doc, 'ISO-8859-1'); -- Should be character set for danish.
    Create xml clob as follow:
    xmldom.writeToClob(root, out_xml);
    Problem: Now is danish 'x, f, e' replace with ??.
    When a use 'xmldom.WriteToFile(root, 'd:\test_document');' I get correctly danish 'x, f, e'!
    I have seen you can use procedure/function 'SetEncoding', but I can not find this function in my Oracle installation (8.1.7.1.1).

    The character set you specify via setCharset() procedure is ignored unless you use writeToFile() later.
    http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_xmldom.htm#CHDCGDDB
    Usage Notes
    This is used for WRITETOFILE Procedures if not explicitly specified at that time.You can also use something like this :
    SQL> set serveroutput on
    SQL>
    SQL> declare
      2 
      3   export_file  clob;
      4   prolog       clob := '<?xml version="1.0" encoding="UTF-8"?>';
      5 
      6  begin
      7 
      8    select prolog || chr(10) ||
      9           xmlserialize(document
    10             xmlelement("TextTranslation"
    11             , xmlattributes(
    12                 '1.0' as "version"
    13               , 'ja'  as "language"
    14               , 'DEMOAND' as "module"
    15               , 'VC' as "type"
    16               )
    17             )
    18             indent
    19           )
    20    into export_file
    21    from dual ;
    22 
    23    dbms_output.put_line ( export_file );
    24 
    25  end;
    26  /
    <?xml version="1.0" encoding="UTF-8"?>
    <TextTranslation version="1.0" language="ja" module="DEMOAND" type="VC"/>
    PL/SQL procedure successfully completed

  • Steve, why is xmldom.writetoclob so slow ??

    I am using xmldom.writetoclob, which is OK when transfering small ( < 1MG ) documents to a CLOB, but as the documetns get bigger it is very slow..
    It takes 15 minutes to transfer a 5MB document to a clob using xmldom.writetoclob.
    Anything I should be doing to see better results ?
    Thanks.
    I am using the PL/SQL parser

    what is your java_pool_size?

  • Xmldom.writeToClob error. [URGENT]

    Any idea why I get the following error when I call:
    xmldom.writeToClob(root, xml_out);
    ORA-20000: An internal error has occurred: CLOB to write to can not be null ORA-06512: at "XML.XMLDOM", line 37 ORA-06512: at "XML.XMLDOM", line 358 ORA-06512: at line 131
    'xml_out' is initialised with null, but 'root' have some nodes and elements, but no text nodes. I do not get this error if I use
    xmldom.writeToBuffer(root, v_xml);
    Thanks
    null

    Thx for your response
    the program looks like this:
    I executed it from a Form;
    PROCEDURE PRUEBA IS
    xml clob;
    vxml varchar2(100);
    len integer := 1;
    pos integer := 1;
    f utl_file.file_type;
    doc xmldom.DOMDocument;
    ppal_node xmldom.DOMNode;
    main_node xmldom.DOMNode;
    root_node xmldom.DOMNode;
    user_node xmldom.DOMNode;
    tercer_node xmldom.DOMNode;
    item_node xmldom.DOMNode;
    ppal_elmt xmldom.DOMElement;
    root_elmt xmldom.DOMElement;
    item_elmt xmldom.DOMElement;
    item_text xmldom.DOMText;
    --Elementos de la cabecera
    header_pi xmldom.DOMProcessingInstruction;
    header_node xmldom.DOMNode;
    CURSOR MODULOS IS
    SELECT T_COAPI AS COAPI,
    T_DNAPI AS DNAPI     
    FROM     T
    WHERE     T_COAPI = 'PES';
    BEGIN
    --Creamos un nuevo DOM document
    doc := xmldom.newDOMDocument();
    ppal_node := xmldom.makeNode(doc);
    FOR Modulo IN Modulos LOOP
    -- El nodo es cada modulo
    root_elmt := xmldom.createElement(doc, 'Modulo');
    root_node := xmldom.appendChild(main_node, xmldom.makeNode(root_elmt));
    --COAPI
    item_elmt := xmldom.createElement(doc, lit_COAPI);
    item_node := xmldom.appendChild(root_node, xmldom.makeNode(item_elmt));
    item_text := xmldom.createTextNode(doc, Modulo.COAPI);
    item_node := xmldom.appendChild(item_node, xmldom.makeNode(item_text));
    --DNAPI
    item_elmt := xmldom.createElement(doc, lit_DNAPI);
    item_node := xmldom.appendChild(root_node, xmldom.makeNode(item_elmt));
    item_text := xmldom.createTextNode(doc, Modulo.DNAPI);
    item_node := xmldom.appendChild(item_node, xmldom.makeNode(item_text));
    END LOOP
    f := utl_file.fopen('TEMP_DIR','PRUEBA.xml','w');
    --Obtenemos la longitud del xml lob
    len := dbms_lob.getlength(xml);
    DBMS_LOB.CreateTemporary(xml,TRUE);
    xmldom.writeToClob(doc,xml); -- HERE I GET THE ERROR
    dbms_xmldom.WriteToFile(f,xml);
    WHILE (pos < len) LOOP
    vxml := dbms_lob.substr(xml,100,pos);
    utl_file.put(f,vxml);
    pos := pos+100;
    END LOOP;
    utl_file.fclose(f);
    END;

  • ERROR WITH XMLDOM.WRITETOCLOB

    Hi,
    I have written the following procedure...............
    procedure Prc_UpdateNodes(clString in out clob, nodename varchar2, nodeValue varchar2) is
         l_doc_node xmldom.DOMNode;
         l_xml_out varchar2(2000);
         begin
                   domDocument      := Fn_GetXmlDocument(clString);
                   nodeList           := xmldom.getElementsByTagName(domDocument, nodename);
                   intNoOfNode      := xmldom.getLength(nodeList);
                   l_doc_node := xmldom.item(nodeList, 0);
                   for loopCount_int in 0.. intNoOfNode - 1 loop
         node := XmlDom.item(nodeList, loopCount_int);
                        valueNode := XmlDom.getFirstChild(node);
                        XmlDom.setNodeValue(valueNode,nodeValue);
                   end loop;
                   XmlDom.writeToClob(domDocument,clString);
    end;
    This below XML Is passed as the first parameter
    The output after this operation for an xml should be..
    <ROWSET>
    <ROW>
    <SITE_NO Key="Yes">1</SITE_NO>
    <PARAMETER_VALUE_NO Key="Yes">0</PARAMETER_VALUE_NO>
    <PARENT_PARAMETER_SPEC_NO>0</PARENT_PARAMETER_SPEC_NO>
    <PARAMETER_SPEC_NO>1</PARAMETER_SPEC_NO>
    <REF_TABLE_KEY_NO>0</REF_TABLE_KEY_NO>
    <REF_TABLE_KEY_TYPE>S</REF_TABLE_KEY_TYPE>
    <SEQ_NO>1</SEQ_NO>
    <SUB_SEQN_NO>0</SUB_SEQN_NO>
    <DATA_TYPE_NO>1</DATA_TYPE_NO>
    <INTEGER_VALUE>0</INTEGER_VALUE>
    <STRING_VALUE>00039</STRING_VALUE>
    <NUMERIC_VALUE>0</NUMERIC_VALUE>
    <DATE_VALUE>01/01/1600</DATE_VALUE>
    <CREATED_ON>0</CREATED_ON>
    <MODIFIED_ON>0</MODIFIED_ON></ROW>
    <ROW>
    <SITE_NO Key="Yes">1</SITE_NO>
    <PARAMETER_VALUE_NO Key="Yes">0</PARAMETER_VALUE_NO>
    <PARENT_PARAMETER_SPEC_NO>0</PARENT_PARAMETER_SPEC_NO>
    <PARAMETER_SPEC_NO>2</PARAMETER_SPEC_NO>
    <REF_TABLE_KEY_NO>0</REF_TABLE_KEY_NO>
    <REF_TABLE_KEY_TYPE>S</REF_TABLE_KEY_TYPE>
    <SEQ_NO>2</SEQ_NO><SUB_SEQN_NO>0</SUB_SEQN_NO>
    <DATA_TYPE_NO>2</DATA_TYPE_NO>
    <INTEGER_VALUE>0</INTEGER_VALUE>
    <STRING_VALUE/>
    <NUMERIC_VALUE>0</NUMERIC_VALUE>
    <DATE_VALUE/>
    <CREATED_ON>0</CREATED_ON>
    <MODIFIED_ON>0</MODIFIED_ON>
    </ROW>
    </ROWSET>
    But the output I get is ……….
    <ROWSET>
    <ROW>
    <SITE_NO Key="Yes">1</SITE_NO>
    <PARAMETER_VALUE_NO Key="Yes">0</PARAMETER_VALUE_NO>
    <PARENT_PARAMETER_SPEC_NO>0</PARENT_PARAMETER_SPEC_NO>
    <PARAMETER_SPEC_NO>1</PARAMETER_SPEC_NO>
    <REF_TABLE_KEY_NO>0</REF_TABLE_KEY_NO>
    <REF_TABLE_KEY_TYPE>S</REF_TABLE_KEY_TYPE>
    <SEQ_NO>1</SEQ_NO>
    <SUB_SEQN_NO>0</SUB_SEQN_NO>
    <DATA_TYPE_NO>1</DATA_TYPE_NO>
    <INTEGER_VALUE>0</INTEGER_VALUE>
    <STRING_VALUE>00039</STRING_VALUE>
    <NUMERIC_VALUE>0</NUMERIC_VALUE>
    <DATE_VALUE>01/01/1600</DATE_VALUE>
    <CREATED_ON>0</CREATED_ON>
    <MODIFIED_ON>0</MODIFIED_ON></ROW>
    <ROW>
    <SITE_NO Key="Yes">1</SITE_NO>
    <PARAMETER_VALUE_NO Key="Yes">0</PARAMETER_VALUE_NO>
    <PARENT_PARAMETER_SPEC_NO>0</PARENT_PARAMETER_SPEC_NO>
    <PARAMETER_SPEC_NO>2</PARAMETER_SPEC_NO>
    <REF_TABLE_KEY_NO>0</REF_TABLE_KEY_NO>
    <REF_TABLE_KEY_TYPE>S</REF_TABLE_KEY_TYPE>
    <SEQ_NO>2</SEQ_NO><SUB_SEQN_NO>0</SUB_SEQN_NO>
    <DATA_TYPE_NO>2</DATA_TYPE_NO>
    <INTEGER_VALUE>0</INTEGER_VALUE>
    <STRING_VALUE/>
    <NUMERIC_VALUE>0</NUMERIC_VALUE>
    <DATE_VALUE/>
    <CREATED_ON>0</CREATED_ON>
    <MODIFIED_ON>0</MODIFIED_ON>
    </ROW>
    </ROWSET>
    0</MODIFIED_ON>
    </ROW>
    </ROWSET>
    The letter in bold above are the newly introduced junk letters
    I think this problem is due to the buffer isssues………….
    Do we have any solution for clearing the buffer….
    Also this error doesnt occur all the time.........
    Sometimes it comes, Sometimes it works fine
    The error is introduced during execution of the statement
    XmlDom.writeToClob(domDocument,clString);
    Can anyone help me on this front?????
    Thanks
    Message was edited by:
    user609257

    Thx for your response
    the program looks like this:
    I executed it from a Form;
    PROCEDURE PRUEBA IS
    xml clob;
    vxml varchar2(100);
    len integer := 1;
    pos integer := 1;
    f utl_file.file_type;
    doc xmldom.DOMDocument;
    ppal_node xmldom.DOMNode;
    main_node xmldom.DOMNode;
    root_node xmldom.DOMNode;
    user_node xmldom.DOMNode;
    tercer_node xmldom.DOMNode;
    item_node xmldom.DOMNode;
    ppal_elmt xmldom.DOMElement;
    root_elmt xmldom.DOMElement;
    item_elmt xmldom.DOMElement;
    item_text xmldom.DOMText;
    --Elementos de la cabecera
    header_pi xmldom.DOMProcessingInstruction;
    header_node xmldom.DOMNode;
    CURSOR MODULOS IS
    SELECT T_COAPI AS COAPI,
    T_DNAPI AS DNAPI     
    FROM     T
    WHERE     T_COAPI = 'PES';
    BEGIN
    --Creamos un nuevo DOM document
    doc := xmldom.newDOMDocument();
    ppal_node := xmldom.makeNode(doc);
    FOR Modulo IN Modulos LOOP
    -- El nodo es cada modulo
    root_elmt := xmldom.createElement(doc, 'Modulo');
    root_node := xmldom.appendChild(main_node, xmldom.makeNode(root_elmt));
    --COAPI
    item_elmt := xmldom.createElement(doc, lit_COAPI);
    item_node := xmldom.appendChild(root_node, xmldom.makeNode(item_elmt));
    item_text := xmldom.createTextNode(doc, Modulo.COAPI);
    item_node := xmldom.appendChild(item_node, xmldom.makeNode(item_text));
    --DNAPI
    item_elmt := xmldom.createElement(doc, lit_DNAPI);
    item_node := xmldom.appendChild(root_node, xmldom.makeNode(item_elmt));
    item_text := xmldom.createTextNode(doc, Modulo.DNAPI);
    item_node := xmldom.appendChild(item_node, xmldom.makeNode(item_text));
    END LOOP
    f := utl_file.fopen('TEMP_DIR','PRUEBA.xml','w');
    --Obtenemos la longitud del xml lob
    len := dbms_lob.getlength(xml);
    DBMS_LOB.CreateTemporary(xml,TRUE);
    xmldom.writeToClob(doc,xml); -- HERE I GET THE ERROR
    dbms_xmldom.WriteToFile(f,xml);
    WHILE (pos < len) LOOP
    vxml := dbms_lob.substr(xml,100,pos);
    utl_file.put(f,vxml);
    pos := pos+100;
    END LOOP;
    utl_file.fclose(f);
    END;

  • Using xmldom.writetoclob

    I am using the procedure xmldom.writetoclob with the PL/SQL
    XDK.
    I am running into speed concerns.
    Below are some results of tests I have done.
    As you can see the time taken to write the contents of the
    DOM out to a clob can quickly become problem for a user waiting
    for a reponse.
    Can any one tell me of a way to speed up this process or a
    work around?
    Thanks very much
    Rick Laird
    clob size= 2913
    start xmldom.writetoclob= 01:57:53
    end xmldom.writetoclob= 01:57:54
    clob size= 8909
    start xmldom.writetoclob= 01:58:06
    end xmldom.writetoclob= 01:58:12
    clob size= 14905
    start xmldom.writetoclob= 01:58:45
    end xmldom.writetoclob= 01:58:55
    clob size= 22400
    start xmldom.writetoclob= 01:59:44
    end xmldom.writetoclob= 01:59:59
    clob size= 29895
    start xmldom.writetoclob= 02:01:09
    end xmldom.writetoclob= 02:01:29
    clob size= 172300
    start xmldom.writetoclob= 02:05:59
    end xmldom.writetoclob= 02:07:54
    clob size= 286224
    start xmldom.writetoclob= 02:15:34
    end xmldom.writetoclob= 02:18:42

    what version of XDK are you using ?
    How much memory do you have ?
    I am getting this results :
         Writting to clob     01/09/2002 9:51:07 AM     
         Done writting to clob     01/09/2002 9:51:13 AM          
         Size of clob : 370433     01/09/2002 9:51:13 AM          

  • End of communication file error ....for xmldom

    Hi,
    Below is a procedure that i am executing.
    I am using NOCOPY For the clob variable.
    While executing the procedure for an xml value for clstring i am getting an error like
    --end of communication channel.
    The xml data is very big but not more that the size for clob.
    procedure Prc_UpdateNodes(clString in out NOCOPY CLOB, nodename varchar2, nodeValue varchar2) is
            l_doc_node xmldom.DOMNode;
            l_xml_out varchar2(2000);
            begin
                      domDocument      := Fn_GetXmlDocument(clString);
                   nodeList           := xmldom.getElementsByTagName(domDocument, nodename);
                   intNoOfNode       := xmldom.getLength(nodeList);
                   l_doc_node := xmldom.item(nodeList, 0);
                   --xmldom.writetobuffer(l_doc_node, l_xml_out);
                   PKS_DEBUG.PRC_DEBUG('CLOB IN PRC_UPDATE' || clString);
                   for loopCount_int in 0.. intNoOfNode - 1  loop
                     node := XmlDom.item(nodeList, loopCount_int);
                        valueNode := XmlDom.getFirstChild(node);
                        --xmldom.writetobuffer(node, l_xml_out);
                        --This return value would be useful only in case of single record where in we could use the same after the insert operation is done
                        -- so that it could be used for the subsequent retrieval.
                        -- In case of multiple records update, this information remains of no use and doesnt have to be handled.
                        XmlDom.setNodeValue(valueNode,nodeValue);
                        --xmldom.writetobuffer(valueNode, l_xml_out);
                   end loop;
                   PKS_DEBUG.PRC_DEBUG('CLOB AFTER PRC_UPDATE' || clString);
                   XmlDom.writeToClob(domDocument,clString);
                   PKS_DEBUG.prc_debug('REMOVING BUFFER');
                  PRC_REMOVE_BUFFER(clString);
                   PKS_DEBUG.PRC_DEBUG('CLOB AFTER WRITITNG TO CLOB' || clString);
            end;The error occurs during the execution of the statement XmlDom.writeToClob(domDocument,clString);
    Do i need the above statement as i am using NOCOPY For the CLOB variable.
    Can anyone help me with this front..
    Thanks.

    checkout TNSPING <service name> from cmd prompt
    Microsoft Windows XP [Version 5.1.2600]
    (C) Copyright 1985-2001 Microsoft Corp.
    C:\Documents and Settings\NJi>tnsping issl
    TNS Ping Utility for 32-bit Windows: Version 2.3.2.1.0 - Production on 25-OCT-06
    14:36:06
    Copyright , 1996(c) Oracle Corporation 1995. All rights reserved.
    Attempting to contact (ADDRESS=(COMMUNITY=tcp.world)(PROTOCOL=TCP)(Host=198.1.2.
    15)(Port=1521))
    OK (100 msec)

  • Oracle xml_dom.writeToClob ignore the character set

    I'm trying to generate a xml file using oracle. After generating the xml using dbms_xmldom, it is stored in a CLOB and later written to a table.
    The problem is that the character set ('UTF-8') is not included in the header even though it is specified using setCharset() procedure.
    Following is the oracle script,
    declare
    export_file_ CLOB ;
    str_export_file_ xmldom.DOMDocument;
    main_node xmldom.DOMNode;
    root_node xmldom.DOMNode;
    root_elmt xmldom.DOMElement;
    begin
    str_export_file_ := xmldom.newDOMDocument;
    xmldom.setVersion(str_export_file_, '1.0');
    xmldom.setCharset(str_export_file_ , 'UTF-8');
    main_node := xmldom.makeNode(str_export_file_);
    root_elmt := xmldom.createElement(str_export_file_,'TextTranslation');
    xmldom.setAttribute( root_elmt, 'version' ,'1.0');
    xmldom.setAttribute( root_elmt, 'language' ,'ja');
    xmldom.setAttribute( root_elmt, 'module' ,'DEMOAND');
    xmldom.setAttribute( root_elmt, 'type' ,'VC');
    root_node := xmldom.appendChild(main_node, xmldom.makeNode(root_elmt));
    export_file_ :=' ';
    xmldom.writeToClob( str_export_file_,export_file_,'UTF-8');
    dbms_output.put_line ( export_file_ );
    end;
    The output is ,
    <?xml version="1.0"?>
    <TextTranslation version="1.0" language="ja" module="DEMOAND" type="VC"/>
    If anybody can suggest me what I have done incorrectly that will be great.
    Thanks in advance.

    The character set you specify via setCharset() procedure is ignored unless you use writeToFile() later.
    http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_xmldom.htm#CHDCGDDB
    Usage Notes
    This is used for WRITETOFILE Procedures if not explicitly specified at that time.You can also use something like this :
    SQL> set serveroutput on
    SQL>
    SQL> declare
      2 
      3   export_file  clob;
      4   prolog       clob := '<?xml version="1.0" encoding="UTF-8"?>';
      5 
      6  begin
      7 
      8    select prolog || chr(10) ||
      9           xmlserialize(document
    10             xmlelement("TextTranslation"
    11             , xmlattributes(
    12                 '1.0' as "version"
    13               , 'ja'  as "language"
    14               , 'DEMOAND' as "module"
    15               , 'VC' as "type"
    16               )
    17             )
    18             indent
    19           )
    20    into export_file
    21    from dual ;
    22 
    23    dbms_output.put_line ( export_file );
    24 
    25  end;
    26  /
    <?xml version="1.0" encoding="UTF-8"?>
    <TextTranslation version="1.0" language="ja" module="DEMOAND" type="VC"/>
    PL/SQL procedure successfully completed

  • Problem due to xmldom.DOMDocument

    Hi,
    I have written a function where i have used xmldom in the matter as listed below :
    doc xmldom.DOMDocument;
    main_node xmldom.DOMNode;
    root_node xmldom.DOMNode;
    user_node xmldom.DOMNode;
    item_node xmldom.DOMNode;
    root_elmt xmldom.DOMElement;
    item_elmt xmldom.DOMElement;
    item_text xmldom.DOMText;
    abc clob;
    doc := xmldom.newDOMDocument;
    main_node := xmldom.makeNode(doc);
    root_elmt := xmldom.createElement(
    doc,
    'Menubar'
    root_node := xmldom.appendChild(
    main_node,
    xmldom.makeNode(root_elmt)
    like wise i am writing into Doc but i have to return evry root or node written using doc to calling environment so i need to read this doc and convert it xmltype so i as to read it but there is complilation error at the point
    abc :=doc
    and the error is PLS-00382: expression is of wrong type
    any suggestion how can i overcome it i can paste the whole code if needed.
    Regards
    Vikas Kumar

    Hello
    The error is coming as you are trying to put DOM Document in either clob or xmltype which are not of the same datatype as xmldom. In the post you have abc of clob type where as in the code you mailed it is xmltype.
    In first scenario i.e. if abc is clob you may have to write something similar to
    xmldom.writetoclob(doc,abc);
    In second Scenario i.e. if abc is xmltype
    DBMS_LOB.CreateTemporary(v_xml_clob, TRUE);
    xmldom.writetoclob(doc,v_xml_clob);
    abc := new xmltype(v_xml_clob);

Maybe you are looking for

  • How do I correct error on e mail? Authenticatiom failed

    I cannot receive or send e-mail. Was working ok till got email from Verizon with new settings. I did that and now I get: Sending of password for user nettiew1 did not succeed. mail serve pop.verizon.net responded;Authentication failed. I don't rememb

  • Unable to connect to localhost Windows 7 x64, CF9 x64

    I've been following along with the Lynda.com tutorial on ColdFusion Builder. Everything went smoothly until the part where I'm supposed to attach CFB to the localhost. The Lynda.com presenter is on a Mac. I am running 64-bit Windows 7 and 64-bit Cold

  • Connected Wifi Name not displayed correctly

    I have the Xperia Tablet Z SGP311. I got the 4.2.2 update through PC companion in UK. However, I saw 2 major problems. One, the "back" button (of the back, home, history group at the bottom bar) is on the middle now instead of on the side making it d

  • Set an array with undeterminate size

    I should know this by now, but go figure. If I want to set up an array of Strings, yet I do not know how many Strings I am going to stick in it, how would I do so? For example, if I want to create an array myArray, and I do not know whether I am goin

  • Corrupted OSX Mountain Lion on MBP

    Hi, I have a MacBook Pro 15.4" mid 2012 model A1398, recently I had a problem which required me to run recovery and reinstall Mountain lion direct download from Apple. The install must have got corrupted as the next day I open up the MBP to check and