Insert the XML document with values of characters < or >

Hello world

Used Oracle: version 11.2.0.3.0

I want to insert an XML document in a binary XML field. But for an element, the value includes characters such as > or <.

Here's an example query:

Update / * + no_xml_query_rewrite * / ms2 set mstag = XMLQuery (' copy $tmp: = .modify (for $i in $tmp/tags/fields[@id="MS"]))

back insert nodes (< value > TEST\n & lt; Address1 & gt; < / value >) in $i) return $tmp' from mstag content back) where psid = 5900;

But because we're using the character & in a SQL query, this request has failed. We invited to specify the 2 values.

So, what is the way of giving the < Address1 > value to the value of the element in the example?

Thanks in advance

The command is not really "fail" in itself. It is just the tool that you are using recognizes '&' characters and treats the following identifiers as replacement variables.

What tool do you use?

For example, in SQL * Plus you can disable this behavior through the SET DEFINE OFF or SET SCAN OFF command.

Tags: Database

Similar Questions

  • How to extract the node where the value of the node is the max in all of the XML document?

    Hello

    I have a transaction that refers to an xmltype in iRecruitment, containing multiple versions of the same node as follows:

    (only for the example data)



    {noformat} & lt; Transaction & gt;


    & lt; data & gt;


    & lt; ObjectVersionNumber & gt; 1 & lt; / object_version_number & gt;


    & lt; EO & gt;


    & lt; Attribute1 & gt; A & lt; / Attribute1 & gt;


    & lt; Attribut2 & gt; B & lt; / attribut2 & gt;


    & lt; /EO & gt;


    & lt; / data & gt;


    & lt; data & gt;


    & lt; ObjectVersionNumber & gt; 2 & lt; / object_version_number & gt;


    & lt; EO & gt;


    & lt; Attribute1 & gt; A & lt; / Attribute1 & gt;


    & lt; Attribut2 & gt; C & lt; / attribut2 & gt;


    & lt; /EO & gt;


    & lt; / data & gt;


    & lt; data & gt;


    & lt; ObjectVersionNumber & gt; X & lt; / object_version_number & gt;


    & lt; EO & gt;


    & lt; Attribute1 & gt;? & lt; / Attribute1 & gt;


    & lt; Attribut2 & gt;? & lt; / attribut2 & gt;


    & lt; /EO & gt;


    & lt; / data & gt;


    & lt; / Transaction & gt; {noformat}

    I can extract a value for FULL-TIME 1 or 2, is not a problem.
    However, how can I go on the selection of a value of an attribute below FULL-TIME X, where X is the maximum value of FULL-TIME in any node in the XML document?

    I tried to the last node corresponding to my way, but it is not always the case that the FULL-TIME max will correspond to this scenario.

    Any help would be greatly appreciated!

    Thank you very much, Pete

    Published by: Pete Mahon on February 24, 2009 12:11

    Here's a way

    SQL> set long 100000
    SQL> with XML as (
      2  select XMLTYPE(
      3  '
      4  
      5     
      6             1
      7             
      8                     A
      9                     B
     10             
     11     
     12     
     13             2
     14             
     15                     A
     16                     C
     17             
     18     
     19     
     20             3
     21             
     22                     ?
     23                     ?
     24             
     25     
     26  ') OBJECT_VALUE
     27    from dual
     28  )
     29  select DATA, OVN
     30    from XML,
     31         XMLTable
     32         (
     33           '/Transaction/data'
     34           passing OBJECT_VALUE
     35           columns
     36           DATA XMLType path '.',
     37           OVN  number  path 'ObjectVersionNumber'
     38         )
     39   where OVN = ( select MAX(OVN)
     40                   from XML,
     41                        XMLTable
     42                        (
     43                          '/Transaction/data'
     44                          passing OBJECT_VALUE
     45                          columns
     46                          OVN  number  path 'ObjectVersionNumber'
     47                        )
     48               )
     49
    SQL> /
    
    DATA
    --------------------------------------------------------------------------------
           OVN
    ----------
    3?
    ?
             3
    
    SQL>
    
  • Change the content of the xml document as data selected with SQLX functions

    Hi all
    I have seen several examples of database xml documents using SQLX functions but they seem to be simple queries, which we reproduce the same forest of xml in all elements. What I'm trying to do is to create something like the following:


    < billing xmls = "http://blurb.com" >
    < header >
    < timestamp > 2008-12-11 13:28:46 < / timestamp >
    < source > ORCL < / source >
    < / header >
    < transaction and billing-answers >
    < invoice-transaction-response >
    < invoice-transaction-id > 36866320 < / billing-transaction-id >
    ORDER of < invoice-transaction-type > < / billing-transaction-type >
    <-group-id of transaction > 092220082100 < / transaction-group-id >
    < ok >
    < charged to date > 2008-09-22T 10: 20:43 - 05:00 < / beak-date >
    < /OK. >
    < / billing-transaction-response >
    < invoice-transaction-response >
    < invoice-transaction-id > 37617490 < / billing-transaction-id >
    ORDER of < invoice-transaction-type > < / billing-transaction-type >
    <-group-id of transaction > 112020082100 < / transaction-group-id >
    < error >
    reasons <>
    < reason >
    < text > impossible to derive information of customer SHIP_TO < / text >
    < / reason >
    < / reasons >
    < / error >
    < / billing-transaction-response >
    < / billing-transaction-answers >
    < / billing >


    I can see how to generate the individual components of the xml document, but I don't know how to put this together in a single select statement:


    SQL > SELECT XMLElement ("billing", XMLAttributes (http://blurb.com LIKE "xmls")
    2, XMLElement ("header"
    3, XMLElement ("timestamp", TO_CHAR (SYSDATE, ' YYYY-MM-DD HH24:MI:SS'))))
    4, XMLElement ("source", "ORCL'"))).extract('/*') xml
    5 FROM DUAL;

    XML
    ----------------------------------------------------------------------------------------
    < billing xmls = "http://blurb.com" >
    < header >
    < timestamp > 2008-12-11 13:28:46 < / timestamp >
    < source > ORCL < / source >
    < / header >
    < / billing >


    SQL > SELECT XMLElement ("billing transaction-answers"
    2, XMLAgg (XMLElement ("billing-transaction-reply"
    3, XMLElement ("billing transaction id", billing_transaction_id)
    4, XMLElement ("billing-transaction-type", billing_transaction_type)
    5, XMLElement ("transaction-group-id", transaction_group_id)
    6, XMLElement ("ok"
    7, XMLElement ("beak-date", billed_date))).extract('/*') xml
    8 FROM table_a
    9 status WHERE! = 'E';

    XML
    ----------------------------------------------------------------------------------------------------
    < transaction and billing-answers >
    < invoice-transaction-response >
    < invoice-transaction-id > 36866320 < / billing-transaction-id >
    ORDER of < invoice-transaction-type > < / billing-transaction-type >
    <-group-id of transaction > 092220082100 < / transaction-group-id >
    < ok >
    < charged to date > 2008-09-22T 10: 20:43 - 05:00 < / beak-date >
    < /OK. >
    < / billing-transaction-response >
    < / billing-transaction-answers >



    MDACFS@CORPD23 > SELECT XMLElement ("billing transaction-answers"
    2, XMLAgg (XMLElement ("billing-transaction-reply"
    3, XMLElement ("billing transaction id", billing_transaction_id)
    4, XMLElement ("billing-transaction-type", billing_transaction_type)
    5, XMLElement ("transaction-group-id", transaction_group_id)
    6, XMLElement ("error"
    7, XMLElement ("patterns"
    8, XMLElement ("reason"
    9, XMLElement ("text", error_message))).extract('/*') xml
    10 FROM table_a
    * 11 situation WHERE = 'E '; *

    XML
    -------------------------------------------------------------------------------------
    < transaction and billing-answers >
    < invoice-transaction-response >
    < invoice-transaction-id > 37617490 < / billing-transaction-id >
    ORDER of < invoice-transaction-type > < / billing-transaction-type >
    <-group-id of transaction > 112020082100 < / transaction-group-id >
    < error >
    reasons <>
    < reason >
    < text > impossible to derive information of customer SHIP_TO < / text >
    < / reason >
    < / reasons >
    < / error >
    < / billing-transaction-response >
    < / billing-transaction-answers >

    This is my first attempt to generate xml from the database if it is not a correct approach then please notify. Any help much appreciated.

    See you soon,.
    Paul.

    Given you already wrote each song as a separate statement which refers to what you want, you already have the concept and just need to merge the three queries SQL in one alone. Here is an example of the fusion of your first two SQL set statements.

    SELECT XMLElement("billing", XMLAttributes('http://blurb.com' AS "xmls")
            ,XMLElement("header"
              ,XMLElement("timestamp", TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'))
              ,XMLElement("source", 'ORCL')
             ),
             (SELECT XMLElement("billing-transaction-replies"
                      ,XMLAgg(XMLElement("billing-transaction-reply"
                       ,XMLElement("billing-transaction-id", rownum))))
               FROM dual
               CONNECT BY level <= 5
             )) rslt
    FROM DUAL;
    
    returns
    
    
         
    2008-12-12 09:21:39 ORCL
    1 2 3 4 5
  • Merge the XML document in a table

    Hello
    I want to merge some of the values of an xml document in a table "Project_Table".

    CREATE TABLE Project_Table
    (
    TASK_ID NUMBER (15),
    TASK_NAME VARCHAR2 (100 BYTE),
    START_DATE DATE,
    )

    I am using the following procedure, that I adapted from another post. It inserts null values, I think because I'm not showing the nodes correctly.

    DECLARE
    BFILE v_bfile: = BFILENAME ("'DTEMP","test.xml");
    v_clob CLOB.
    BEGIN
    -Create directory DTEMP as "C:\TEMP";
    -grant read the < schema > DTEMP directory;

    DBMS_LOB.CREATETEMPORARY (v_clob, TRUE);
    DBMS_LOB. OPEN (v_bfile, DBMS_LOB.lob_readonly);
    DBMS_LOB. LoadFromFile (v_clob, v_bfile, DBMS_LOB.lobmaxsize);
    Dbms_output.put_line (v_clob);
    MERGE IN project_table t
    USING (SELECT TO_NUMBER (EXTRACTVALUE (VALUE (x), ' / task ')) task_id,)
    To_date (EXTRACTVALUE (value (x), "/ start"), 'DD-MM-YYYY') start_date,
    EXTRACTVALUE (value (x), "/ name") TaskName
    (SELECT XMLTYPE (v_clob) XML
    THE DOUBLE).
    TABLE (XMLSEQUENCE (EXTRACT (xml, ' / project'))) x) r
    WE (t.task_id = r.task_id)
    WHEN MATCHED THEN
    UPDATE
    SET t.start_date = r.start_date, t.task_name = r.task_name
    WHEN NOT MATCHED THEN
    INSERT (task_id, start_date, taskname)
    VALUES (r.task_id, r.start_date, r.task_name);
    COMMIT;
    END;

    This is the document of test.xml.

    <? XML version = "1.0" encoding = "UTF-8"? >
    -name of the project 'ProjectName' company 'Company' webLink = = = "" view-date = '2009-12-14"see-index '0' = gantt-Divider-location = '300' resource-divider-card ="300"version ="2.0">"
    < description / >
    < zoom-view state = "default: 8" / >
    -<!
    ->
    -< calendars >
    -day-types >
    < day-type id = '0' / >
    < day-type id = "1" / >
    -< Calendar id = "1" name = "default" >
    < Sun weeks default = '0' LUN '0' = TEU = '0' kills = '0' game = '0' Fri '0' = Saturday = '0' / >
    < overloaded-day-types / >
    < days / >
    < / calendar >
    < / day-types >
    < / calendars >
    -task color = "#8cb6ce" >
    -< taskproperties >
    < taskproperty id = "tpd0" name = 'type' type = 'default' valuetype = "icon" / >
    < taskproperty id = "TDP1" name = 'priority' type = 'default' valuetype = "icon" / >
    < taskproperty id = "tpd2" name = 'info' type = 'default' valuetype = "icon" / >
    < taskproperty id = "tpd3" name = "name" type = 'default' valuetype = "text" / >
    < taskproperty id = "tpd4" name = "begindate" type = 'default' valuetype = "date" / >
    < taskproperty id = "tpd5" name = "enddate" type = 'default' valuetype = "date" / >
    < taskproperty id = "tpd6" name = "Duration" type = 'default' valuetype = "int" / >
    < taskproperty id = "tpd7" name = "completion" type = 'default' valuetype = "int" / >
    < taskproperty id = "tpd8" name = "Coordinator" type = 'default' valuetype = "text" / >
    < taskproperty id = "tpd9" name = "predecessorsr" type = "default" valuetype = "text" / >
    < / taskproperties >
    < job id = '0' name = 'TaskA"color =" #0099cc "form = meeting"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"="false"start ="2010-01-28"duration ="1"complete ="0"priority ="1"expand ="true"/ >
    < task id = "1" name = "TaskB" color = "#ff0000" form = meeting "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" = "false" start = "2010-01-28" duration = "1" complete = "100" priority = "1" expand = "true" / >
    < job id = "2" name = 'Day' color = "#ff9933" form = meeting "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" = "false" start = "2010-02-01" duration = "19" complete = "0" priority = "1" expand = "true" / >
    < job id = "3" name = "TaskD" color = "#ff0000" form = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" meeting = "false" start = "2010-02-01" duration = "32" full = "100" priority = "1" expand = "true" / >
    < job id = "4" name = "TaskE" color = "#66ff99" form = meeting "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" = "false" start = "2010-02-01" duration = "67" complete = "0" priority = "1" expand = "true" / >
    < job id = "5" name = "TaskF" color = "#66ff99" form = meeting "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" = "false" start = "2010-02-01" duration = "46" complete = "10" priority = "1" expand = "true" / >
    < job id = "6" name = "TaskG" color = "#00cccc" form = meeting "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" = "false" start = "2010-03-15" duration = "30" complete = "0" priority = "1" expand = "true" / >
    < job id = "7" name = "TaskH" color = "#00cccc" form = meeting "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" = "false" start = "2010-03-15" duration = "103" full '1' = '1' priority = expand = "true" / >
    < job id = "8" name = "TaskI" color = "#0000ff" form = meeting "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" = "false" start = '2010-04-26' length = "11" complete = "0" priority = "1" expand = "true" / >
    < job id = '9' name = 'TaskJ"color =" #0000ff "form = meeting"0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"="false"start = '2010-04-26' length ="11"complete ="0"priority ="1"expand ="true"/ >
    < job id = "10" name = "TaskK" color = "#000000" meeting = 'false' start time = "2010-07-12" = "65" full = "0" priority = "1" expand = "true" / >
    < / tasks >
    < resources / >
    < allowances / >
    < holiday / >
    -< taskdisplaycolumns >
    < displaycolumn property id = "tpd3" order = "0" width = "75" / >
    < displaycolumn property id = "tpd4" order = "1" width = "75" / >
    < displaycolumn property id = "tpd5" order = "2" width = "75" / >
    < displaycolumn property id = "tpd7" order = "3" width = "75" / >
    < / taskdisplaycolumns >
    < Previous / >
    < roles roles-name = "Default" / >
    < / project >

    Any ideas how to change the procedure, in order to merge the data in the xml document in the table?

    Thank you

    Hello

    Here's what you need in your USING clause:

    SELECT to_number(extractvalue(column_value, 'task/@id'))                as task_id,
           to_date(extractvalue(column_value, 'task/@start'), 'YYYY-MM-DD') as start_date,
           extractvalue(column_value, 'task/@name')                         as task_name
    FROM TABLE(
      XMLSEQUENCE(
        EXTRACT(xmltype(v_clob), '//task')
      )
    )
    

    Since you want nodes "task" request, just extract them directly. In addition, 'id', 'start', 'name' is attributes, you must access them with an '@'.

    You can also take a look at function XMLTABLE (which tends to replace construction TABLE (XMLSEQUENCE (...))):

    SELECT *
    FROM XMLTABLE(
     '//task'
     passing xmltype(v_clob)
     columns task_id    number(15)    path '/task/@id',
             start_date date          path '/task/@start',
             task_name  varchar2(100) path '/task/@name'
    )
    

    Edit: the XMLType constructor overload taking a BFILE type as an argument, so you can simplify the code a bit more:

    DECLARE
    
     v_xml XMLTYPE := XMLTYPE( BFILENAME('DTEMP', 'test.xml'), nls_charset_id('AL32UTF8') );
    
    BEGIN
    
    MERGE INTO project_table t
    USING (
      SELECT *
      FROM XMLTABLE(
       '//task'
       passing v_xml
       columns task_id    number(15)    path '/task/@id',
               start_date date          path '/task/@start',
               task_name  varchar2(100) path '/task/@name'
      )
    ) r
    ON (t.task_id = r.task_id)
    WHEN MATCHED THEN ...
    WHEN NOT MATCHED THEN ...
    ;
    
    ...
    
    END;
    

    HTH

    Published by: odie_63 on March 18, 2010 12:13

    Published by: odie_63 on March 18, 2010 12:15

  • Help in parsing the XML result with ksoap2

    Hi, I have another problem. I used KSOAP2 to call a web service net but when I catch him to display the result with a selectionneret, it shows the following screen:

    reading on the web, I didn't find a good way to analyze the result. Could you help me with this? Thanks in advance

    Thanks, the problem here is that we use the same webservice for more devices and a web page in .NET) that's why we use this webservice. Anyway thanks for the help. I read a lot of posts and the only way is perhaps to save the XML document in the SD card

  • Display the error when the xml document is not valid against the schema

    Hello

    I'm using isChemaValid() in a way that, to determine if the xml document is valid against the xml schema.

    This function returns only 0 or 1, and I want to display the error and the line number if the xml is not valid.

    How can I achieve this?

    Thanks in advance,

    Elad

    Use the XMLType schemaValidate() method. It will throw an exception whose message contains the validation error.

    Get a number of 'line' is not sensible as XML is concerned.

  • How to generate an xml document with a BLOB on the inside?

    Hello

    Using the Oracle 11 g Release 11.2.0.4.0 database, I actually use dbms_xmldom to generate xml data.

    When generated, it is sent using utl_http.

    All right, except that I have to include a child that contains a BLOB (stored in the database) in the exact way that it is stored in the XML structure.

    (Field value contains an encoded 64 base pdf file). Length of the file can be up to 2 MB

    My nearest solution was to Convert Oracle XML BLOB to type even if I'm really stuck with LPX-00210 error.

    Is there another way than dbms_xmldom do?

    In fact, I'm totally lost.

    Can you give me a hand on this or show me an example of work?

    Kind regards

    Stone

    Here goes...

    SQL> create table images (
      2    id       integer
      3  , name     varchar2(256)
      4  , content  blob
      5  );
    
    Table created
    
    SQL>
    SQL> declare
      2
      3    bf          bfile := bfilename('XML_DIR','base64.bin');
      4    lob_ptr     blob;
      5    dest_offs   integer := 1;
      6    src_offs    integer := 1;
      7
      8  begin
      9
    10    insert into images (id, name, content)
    11    values (1, 'Koala.jpg', empty_blob())
    12    returning content into lob_ptr;
    13
    14    dbms_lob.open(bf, dbms_lob.lob_readonly);
    15    dbms_lob.loadblobfromfile(lob_ptr, bf, dbms_lob.getlength(bf), dest_offs, src_offs);
    16    dbms_lob.close(bf);
    17
    18  end;
    19  /
    
    PL/SQL procedure successfully completed
    
    SQL> commit;
    
    Commit complete
    
    SQL>
    SQL> select id
      2       , name
      3       , utl_raw.cast_to_varchar2(dbms_lob.substr(content, 30)) as first_bytes
      4       , dbms_lob.getlength(content) as lob_size
      5  from images
      6  /
    
       ID NAME         FIRST_BYTES                      LOB_SIZE
    ----- ------------ -------------------------------- ----------
        1 Koala.jpg    /9j/4AAQSkZJRgABAgEAYABgAAD/7g      1068504
    
    SQL>
    SQL> declare
      2
      3    x_doc       xmltype;
      4    domdoc      dbms_xmldom.DOMDocument;
      5    domnode     dbms_xmldom.DOMNode;
      6    domtext     dbms_xmldom.DOMText;
      7    ostream     sys.utl_BinaryOutputStream;
      8    chunksize   pls_integer;
      9    offset      pls_integer := 1;
    10    buf         raw(32767);
    11    image       blob;
    12
    13  begin
    14
    15    select xmlelement("image",
    16             xmlelement("id", t.id)
    17           , xmlelement("name", t.name)
    18           , xmlelement("content")
    19           )
    20         , t.content
    21    into x_doc
    22       , image
    23    from images t
    24    where t.id = 1 ;
    25
    26    domdoc := dbms_xmldom.newDOMDocument(x_doc);
    27
    28    -- get /image/content node so that we can append a text node and stream the BLOB to it :
    29    domnode := dbms_xslprocessor.selectSingleNode(dbms_xmldom.makeNode(domdoc), '/image/content');
    30    domtext := dbms_xmldom.createTextNode(domdoc, null);
    31    domnode := dbms_xmldom.appendChild(domnode, dbms_xmldom.makeNode(domtext));
    32
    33    ostream := DBMS_XMLDOM.setNodeValueAsBinaryStream(domnode);
    34    chunksize := dbms_lob.getchunksize(image);
    35
    36    loop
    37      begin
    38        -- read BLOB in chunk of  :
    39        dbms_lob.read(image, chunksize, offset, buf);
    40      exception
    41        when no_data_found then
    42          exit;
    43      end;
    44      -- write chunk to DOM node :
    45      ostream.write(buf, chunksize);
    46      offset := offset + chunksize;
    47    end loop;
    48
    49    ostream.flush();
    50    ostream.close();
    51
    52    dbms_xmldom.writeToFile(domdoc, 'XML_DIR/image.xml');
    53    dbms_xmldom.freeDocument(domdoc);
    54
    55  end;
    56  /
    
    PL/SQL procedure successfully completed
    

    Image.xml release:

    
      1
      Koala.jpg
      /9j/4AAQSkZJRgABAgEAYABgAAD/7gAOQWRvYmUAZAAAAAAB/+EUI0V4aWYAAE1NACoAAAAIAAcB
    MgACAAAAFAAAAGIBOwACAAAABwAAAHZHRgADAAAAAQAEAABHSQADAAAAAQA/AACcnQABAAAADgAA
    AADqHAAHAAAH9AAAAACHaQAEAAAAAQAAAH0AAADnMjAwOTowMzoxMiAxMzo0ODoyOABDb3JiaXMA
    ...
    aWpkRY6dqaJY42qFjs8ZZ5nlkjZpmJUiJ1+ijn3dVeTtb4B1R5NJVaEkn/V8+u4Xijpp6SFlimp6
    qNHgjlVIgrtLCyxll1NpaT6An6W92mA8HwkyadMeEZJjEDmvE/t/1f5uv//Z
    
    
  • How to insert an XML document to the database table

    Here's one my XML document example I want to import into database

    Example XML Document
    <? XML version = "1.0"? >
    rowset <>
    < ROW >
    < DEPTXML department_id = "10" >
    SALES of < DEPARTMENT_NAME > < / DEPARTMENT_NAME >
    < EMPLIST >
    < EMP_T EMPLOYEE_ID = "30" >
    Scott < LAST_NAME > < / LAST_NAME >
    < / EMP_T >
    < EMP_T EMPLOYEE_ID = "31" >
    Marie < LAST_NAME > < / LAST_NAME >
    < / EMP_T >
    < / EMPLIST >
    < / DEPTXML >
    < / ROW >
    < ROW >
    < DEPTXML department_id = "20" >
    < DEPARTMENT_NAME > ACCOUNTING < / DEPARTMENT_NAME >
    < EMPLIST >
    < EMP_T EMPLOYEE_ID = "40" >
    John < LAST_NAME > < / LAST_NAME >
    < / EMP_T >
    < EMP_T EMPLOYEE_ID = "41" >
    Jerry < LAST_NAME > < / LAST_NAME >
    < / EMP_T >
    < / EMPLIST >
    < / DEPTXML >
    < / ROW >
    < / LINES >
    ********End***********

    Table in which I want to import this file

    hr_new_emp
    (
    department_id number,
    department_name varchar2 (50).
    Number of employe_id
    last_name varchar2 (50)
    )

    If your XML code is in a file, the easiest is to load as a CLOB in the file (google search will give you lots of results to load a file into a CLOB, so I won't detail it here). Once you have it as a CLOB you can fairly easily convert that XMLTYPE for example

      v_xml := XMLTYPE(v_clob);
    

    (assuming that v_xml is declared as XMLTYPE and v_clob is declared as a CLOB)

    Once you have it as an XMLTYPE that is simple to use XMLTABLE to break the XML into its components using SQL...

    SQL> ed
    Wrote file afiedt.buf
    
      1  with t as (select xmltype('
      2  
      3  
      4  
      5  SALES
      6  
      7  
      8  Scott
      9  
     10  
     11  Mary
     12  
     13  
     14  
     15  
     16  
     17  
     18  ACCOUNTING
     19  
     20  
     21  John
     22  
     23  
     24  Jerry
     25  
     26  
     27  
     28  
     29  ') as xml from dual)
     30  --
     31  -- END OF TEST DATA
     32  --
     33  select x.department_id, x.department_name, y.employee_id, y.last_name
     34  from t
     35      ,xmltable('/ROWSET/ROW'
     36                passing t.xml
     37                columns department_id   number       path '/ROW/DEPTXML/@DEPARTMENT_ID'
     38                       ,department_name varchar2(30) path '/ROW/DEPTXML/DEPARTMENT_NAME'
     39                       ,emplist         xmltype      path '/ROW/DEPTXML/EMPLIST'
     40               ) x
     41      ,xmltable('/EMPLIST/EMP_T'
     42                passing x.emplist
     43                columns employee_id     number       path '/EMP_T/@EMPLOYEE_ID'
     44                       ,last_name       varchar2(30) path '/EMP_T/LAST_NAME'
     45*              ) y
    SQL> /
    
    DEPARTMENT_ID DEPARTMENT_NAME                EMPLOYEE_ID LAST_NAME
    ------------- ------------------------------ ----------- ------------------------------
               10 SALES                                   30 Scott
               10 SALES                                   31 Mary
               20 ACCOUNTING                              40 John
               20 ACCOUNTING                              41 Jerry
    

    ... and once you have selected the data as it is quite easy to use an INSERT statement around it to insert data into a table, as in a regular INSERT... Select...

    If you are dealing with large amounts of data or a more complex XML structure, you can consider using an XML schema to shred the data in tables.

    Example here...

    Re: XML processing in oracle file

    And you can also load XML data easily by using the function XDB (WebDAV) to Oracle. Details in the Oracle documentation for that or you could find help in the forum XML DB, which also has a FAQ detailing the different methods how to load XML shred data...

    DB XML FAQ

  • LOVs using cascading on the Page elements with values exceeding 4000 characters

    A few days ago, I asked a question on the community, but it turned out that there was something wrong with my account and they have removed the item, so I'll just post the solution I found here now:

    Well, I found a way to use LOVs cascading on page elements with values exceeding 4000 characters:

    Let's say I have a shuttle named P1_ORGANISATIE with "List of values" box, a dynamic LOV named "Source: lists of values Query" containing the value:

    Select NAAM as display_value, ID like return_value

    of NINEHAM

    order by 1

    If the number of records-NINEHAM is insufficient, the length of the value of P1_ORGANISATIE, which is a list of concatenated with colon separated digital ID, can exceed 4000 characters.

    Now, suppose I have a list of selection called P1_TEST that is connected through "List of values"-> "Cascading LOV Parent article (s)" with P1_ORGANISATIE, using a named LOV dynamic with "Source: lists of values Query" containing:

    Select distinct TST. NAAM as display_value, TST.ID as return_value

    of the OTE NINEHAM

    Join the AFDELINGEN ADG ON (ADG. OTE_ID = OTE.ID)

    Join the DEELNEMERS DNR ON (DNR. ADG_ID = ADG.ID)

    Join TESTDEELNEMERS TDR WE (TDR. DNR_ID = DNR.ID)

    Join TESTEN TST ON (TST.ID = RDT. TST_ID)

    where instr (":" |: P1_ORGANISATIE |) '':'', '':'' || OTE.ID | :'') > 0

    order by 1

    In this case, when P1_ORGANISATIE exceeds 3998 characters, you'll get an "ORA-01704: string literal too long"-error and the P1_TEST will show an element called "undefined".

    A way around this is possible because for a named LOV, you can use a "function that returns a sql query" instead of a simple sql query. In other words, we can apply in the context of PL/SQL and thus have maximum for expressions of 32767 instead of 4000 characters. In addition, it is possible to use the two APEX_UTIL. STRING_TO_TABLE and APEX_COLLECTION.

    Setting "Source: lists of query values" on the LOV appointed to P1_TEST with the following code will work:

    DECLARE

    l_selected APEX_APPLICATION_GLOBAL. VC_ARR2;

    l_qry varchar2 (32767): =.

    "Select distinct TST. NAAM as display_value, TST.ID as return_value

    of the OTE NINEHAM

    Join the AFDELINGEN ADG ON (ADG. OTE_ID = OTE.ID)

    Join the DEELNEMERS DNR ON (DNR. ADG_ID = ADG.ID)

    Join TESTDEELNEMERS TDR WE (TDR. DNR_ID = DNR.ID)

    Join TESTEN TST ON (TST.ID = RDT. TST_ID)

    $1

    order by 1';

    BEGIN

    IF: P1_ORGANISATIE IS NULL

    OR LENGTH(:P1_ORGANISATIE) < = 4000

    THEN RETURN

    Replace (l_qry

    ,'$1'

    ,' where instr (":" |: P1_ORGANISATIE |) '':'', '':'' || OTE.ID | :'') > 0'

    );

    ON THE OTHER

    l_selected: = APEX_UTIL. STRING_TO_TABLE(:P1_ORGANISATIE);

    APEX_COLLECTION. CREATE_OR_TRUNCATE_COLLECTION (p_collection_name = > 'ORGANISATIE_COLLECTIE');

    FOR id IN 1.l_selected.count

    LOOP

    APEX_COLLECTION.add_member (p_collection_name = > 'ORGANISATIE_COLLECTIE')

    , p_n001 = > to_number (l_selected (id))

    );

    END LOOP;

    RETURN

    Replace (l_qry

    ,'$1'

    ,'join apex_collections ON APC (APC. COLLECTION_NAME = "ORGANISATIE_COLLECTIE" AND APC. N001 = OTE.ID)"

    );

    END IF;

    END;

    Andreas Groenevelt says:

    A few days ago, I asked a question on the community, but it turned out that there was something wrong with my account and they have removed the item, so I'll just post the solution I found here now:

    Something was wrong with the whole site: AP invoice tolerance

    I don't post anything substantive until we find out what is happening.

  • Is it safe to remove the date in the name of the xml document?

    Hi, the iTunes library xml document is titled "iTunes Library" 2015-07-11. Is this correct and problems can occur if l remove the name date?

    L ask because my Sonos system has trouble with importing iTunes playlists and they are suggesting that the document name length perhaps the question.

    Thank you

    This file is a copy of the database (.itl) iTunes created by iTunes, during an update.  The XML version of the library is always called iTunes Library.xml.  Is there is no basis for comment by Sonos, that it may be related to the length of the absolute path of the XML file - where it is on your system?

  • What is the best way to apply choice relational tables in the XML document?

    I've got an XML document from outside I turn with full DB XSLT document.

    Some parts of the document contain codes I want to tranfsorm to significant labels of relational tables in our database.

    On road is to disassemble the XML into the relational views and join these views with tables of choice and then back, this time with labels translated, using XMLElement, etc...

    Is there another way less heavy? For example,.

    Select updateXML)
    xml_dta
    ,'/ / section_to_translate/node_to_translate/variable / text () '
    ,(
    Select the label
    of table_recherche
    where Group = extractValue (current_node, '... / Group/Text () ')
    and code = extractValue (current_node, '... / variable/Text () ')
    )
    ) xml_dta
    from my_table
    where... criteria

    However, I do not know how to move from the current node to the extractValue function (if it is possible?.)

    Anyone done the second way?

    Thank you

    You didn't tell the version of your database, so I assume one of them later.

    You can include the part of the translation in the XSL transformation, by accessing an external research paper generated from the database beforehand.

    Here is an example of use of the HR diagram example:

    (1) the source document that are to be processed: emp.xml

    
    
     
      198
      Donald
      OConnell
      SH_CLERK
     
     
      199
      Douglas
      Grant
      SH_CLERK
     
     
      200
      Jennifer
      Whalen
      AD_ASST
     
     
      201
      Michael
      Hartstein
      MK_MAN
     
     
      202
      Pat
      Fay
      MK_REP
     
     
      203
      Susan
      Mavris
      HR_REP
     
     
      204
      Hermann
      Baer
      PR_REP
     
     
      205
      Shelley
      Higgins
      AC_MGR
     
     
      206
      William
      Gietz
      AC_ACCOUNT
     
     
      100
      Steven
      King
      AD_PRES
     
    
    

    (2) the lookup table:

    SQL> create table lookup_table as
      2  select job_id, job_title
      3  from hr.jobs;
    
    Table created
    
    SQL> select * from lookup_table;
    
    JOB_ID     JOB_TITLE
    ---------- -----------------------------------
    AD_PRES    President
    AD_VP      Administration Vice President
    AD_ASST    Administration Assistant
    FI_MGR     Finance Manager
    FI_ACCOUNT Accountant
    AC_MGR     Accounting Manager
    AC_ACCOUNT Public Accountant
    SA_MAN     Sales Manager
    SA_REP     Sales Representative
    PU_MAN     Purchasing Manager
    PU_CLERK   Purchasing Clerk
    ST_MAN     Stock Manager
    ST_CLERK   Stock Clerk
    SH_CLERK   Shipping Clerk
    IT_PROG    Programmer
    MK_MAN     Marketing Manager
    MK_REP     Marketing Representative
    HR_REP     Human Resources Representative
    PR_REP     Public Relations Representative
    
    19 rows selected
     
    

    (3) generate us the document search and store it in the XML DB repository (so that it can be referenced in the XSLT):

    SQL> show user
    User is "dev"
    
    SQL>
    SQL> declare
      2   res boolean;
      3  begin
      4   res := dbms_xdb.CreateResource(
      5    abspath => '/public/temp/lookup.xml',
      6    data => dburitype('/DEV/LOOKUP_TABLE').getXML
      7   );
      8   commit;
      9  end;
     10  /
    
    PL/SQL procedure successfully completed
    
    SQL> set long 10000
    SQL> select xdburitype('/public/temp/lookup.xml').getCLOB() from dual;
    
    XDBURITYPE('/PUBLIC/TEMP/LOOKU
    --------------------------------------------------------------------------------
    
    
      
        AD_PRES
        President
      
      
        AD_VP
        Administration Vice President
      
      
        AD_ASST
        Administration Assistant
      
      
        FI_MGR
        Finance Manager
      
      
        FI_ACCOUNT
        Accountant
      
      
        AC_MGR
        Accounting Manager
      
      
        AC_ACCOUNT
        Public Accountant
      
      
        SA_MAN
        Sales Manager
      
      
        SA_REP
        Sales Representative
      
      
        PU_MAN
        Purchasing Manager
      
      
        PU_CLERK
        Purchasing Clerk
      
      
        ST_MAN
        Stock Manager
      
      
        ST_CLERK
        Stock Clerk
      
      
        SH_CLERK
        Shipping Clerk
      
      
        IT_PROG
        Programmer
      
      
        MK_MAN
        Marketing Manager
      
      
        MK_REP
        Marketing Representative
      
      
        HR_REP
        Human Resources Representative
      
      
        PR_REP
        Public Relations Representative
      
    
     
    

    (4) the sheet XSLT stylesheet (stored in XDB repository as well): emp.xsl

    
    
     
     
     
     
     
      
     
     
     
      
      
       
       
        
       
      
     
    
    

    The transformation is rather bland, but the interesting part lies in access to external document within it.
    I used a key to index the JOB_ID/function pairs.

    (5) last step, apply the transformation:

    SQL> select xmlserialize(document
      2   xmltransform(
      3    xmltype(bfilename('DUMP_DIR','emp.xml'),nls_charset_id('AL32UTF8')),
      4    xdburitype('/public/temp/emp.xsl').getXML()
      5   ) as clob indent
      6  )
      7  from dual;
    
    XMLSERIALIZE(DOCUMENTXMLTRANSF
    --------------------------------------------------------------------------------
    
    
      
        Donald OConnell
        Shipping Clerk
      
      
        Douglas Grant
        Shipping Clerk
      
      
        Jennifer Whalen
        Administration Assistant
      
      
        Michael Hartstein
        Marketing Manager
      
      
        Pat Fay
        Marketing Representative
      
      
        Susan Mavris
        Human Resources Representative
      
      
        Hermann Baer
        Public Relations Representative
      
      
        Shelley Higgins
        Accounting Manager
      
      
        William Gietz
        Public Accountant
      
      
        Steven King
        President
      
    
     
    

    The input document is transformed and each job_id is replaced by its corresponding label.

  • In the XML document HTML tags

    I have an application that loads an XML file information and displays in a dynamic text box. Which works very well. Now, I want to add tags HTML of the information contained in the XML file for the dynamic text box will format. If I add html right:

    < Answer1 > Earth, < b > < /b > air, fire and water. < / Answer1 >

    I get a null value in the text box. If I encode

    < Answer1 > Earth, & gt; b & lt; Air & gt; / & lt; fire and water. < / Answer1 >

    It then displays

    Earth, the < b > < /b > air, fire and water.

    No help on how to code html embedded in an XML document, so a dynamic text box using the html code?

    Thank you.

    Just use CDATA tags around your HTML values, for example:

    air, fire and water.]] >

    HTH.

  • Loading the XML file with the missing elements dynamically by ODI

    Hi guys,.

    I have the XML with two nodes Employee and address below. On a daily basis, sometimes the address element might not come from the source xml file, but my interface has columns mapped to the elements of the address, and that is why it may fail because of the source element is not found in the file or data could not get charged because the State 'and' in the sql query that is generated between the employee and address elements.  Is there a way where I can load the data dynamically where I can search in the file only for items (used) present and dynamically loading data only for these items?

    XML file:

    <? XML version = "1.0" encoding = "UTF-8"? >

    < EMP >

    < Empsch >

    < employee >

    < EmployeeID 12345 > < / EmployeeID >

    < original > t < / initials >

    John < name > < / LastName >

    DOE < FirstName > < / name >

    < / employee >

    < address >

    < > 12345 as WorkPhone < / as WorkPhone >

    < WorkAddress > test 234 < / WorkAddress >

    < / address >

    < / Empsch >

    < / EMP >

    Thank you

    Fabien Tambisetty

    I managed to solve it by using left outer joins, and in referring to the structure of the table of the XSD

  • How to set up sites of confidence for the PDF Documents with Hyerplinks to Lotus Notes databases?

    Hello everyone,

    my company is using PDF documents with hyperlinks to Lotus Notes databases.

    When I open one of these files with Adobe Reader Default Setup, I can not open the hyperlinks.

    When I disable the safe_mode at startup, it is possible to open links.

    To ensure safety, we try to set the trust for our Notes Server site, but I couldn't find a solution.

    Our servers work with Lotus Notes 9, customers use the Version 8.5.3.

    Clients are installed with Windows 7 Enterprise.

    We test with Adobe Reader DC, Version 2015.007.20033

    Thanks for your support in this matter.

    Thank you in advance everybody!

    Hi oliverh33447604,

    Open Acrobat Reader DC, navigate to the Edit-> Preferences-> Trust Manager menu-> settings

    Use the option of the customer to add to the list of Web sites.

    Kind regards

    Nicos

  • Generate the XML file with elements and attributes in table Oracle

    Hello

    I have the following table structure.

    CREATE TABLE SPOOL
    (
    COIL_ID NUMBER (10),
    COIL_NUMBER VARCHAR2 (40),
    COIL_PO_OPERATING_UNIT VARCHAR2 (20).
    COIL_PO_NUMBER VARCHAR2 (40),
    MILL_NUMBER VARCHAR2 (2),
    MILL_COIL_STATUS VARCHAR2 (15).
    ITEM_NUMBER VARCHAR2 (40),
    COIL_WEIGHT NUMBER (38),
    WEIGHT_UOM VARCHAR2 (10),
    DOCUMENT_NUMBER VARCHAR2 (40),
    DATE OF DOCUMENT_DATE,
    DOCUMENT_STATUS VARCHAR2 (15).
    DOCUMENT_TYPE VARCHAR2 (20).
    DOCUMENT_SOURCE VARCHAR2 (20).
    TEST_ID NUMBER (38),
    NUMBER VALUE,
    TEST_UOM VARCHAR2 (20).
    TEST_STATUS VARCHAR2 (70).
    TESTER_LOGIN VARCHAR2 (20).
    EQUIPMENT_CODE VARCHAR2 (50).
    DOC_STS_MSG VARCHAR2 (600)
    )
    /
    For each record COILID, there could be several folders baased on TEST_ID/VALUE/TEST_UOM etc.

    And I would like to prepare the xml file in the following format by selecting data in the COIL?


    <? XML version = "1.0"? >
    -coil xsi: noNamespaceSchemaLocation = "www.tempel.com/COIL.xsd" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:xdb = "http://xmlns.oracle.com/xdb" >
    < CoilId > 1419532 < / CoilId >
    < CoilNo > D2221050010A0 < / CoilNo >
    Changzhou < CoilPOOperatingUnit > < / CoilPOOperatingUnit >
    < CoilPONo > 4619 < / CoilPONo >
    < MillNo > 86 < / MillNo >
    Test of < MillCoilStatus > < / MillCoilStatus >
    C5 050FP800 < ItemNo > < / ItemNo >
    < weight > 7076 < / weight >
    KILOGRAM of < GLU > < / UDM >
    < DocumentNo > 0 < / DocumentNo >
    < DocumentDate > 2013 - 01 - 11 < / DocumentDate >
    < DocumentStatus > not < / DocumentStatus >
    < DocumentType > test < / DocumentType >
    CHIGMA1 < DocumentSource > < / DocumentSource >
    < DocStsMsg test = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "0.4992" TestUnit = "mm" Status = 'NonProcessed' TestId = "135" / >
    < test DocStsMsg = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "0.0128" TestUnit = "mm" Status = 'NonProcessed' TestId = "124" / >
    < DocStsMsg test = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "12" TestUnit = "mm" Status = 'NonProcessed' TestId = "125" / >
    < DocStsMsg test = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "0.5095" TestUnit = "mm" Status = 'NonProcessed' TestId = "127" / >
    < DocStsMsg test = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "0.5042" TestUnit = "mm" Status = 'NonProcessed' TestId = "128" / >
    < DocStsMsg test = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "0.5058" TestUnit = "mm" Status = 'NonProcessed' TestId = "129" / >
    < DocStsMsg test = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "0.4967" TestUnit = "mm" Status = 'NonProcessed' TestId = "130" / >
    < DocStsMsg test = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "0.5049" TestUnit = "mm" Status = 'NonProcessed' TestId = "131" / >
    < DocStsMsg test = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "0.4972" TestUnit = "mm" Status = 'NonProcessed' TestId = "132" / >
    < DocStsMsg test = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "0.4960" TestUnit = "mm" Status = 'NonProcessed' TestId = "133" / >
    < DocStsMsg test = '0' EquipmentCode = "CHIGMA1" TesterLogin = "dpkrueger" Value = "0.4996" TestUnit = "mm" Status = 'NonProcessed' TestId = "134" / >
    < / reel >

    Can you please guide me how to do it in a single query?

    Thanks in advance.

    Function EXTRACT will force a print in your version:

    SELECT XMLElement("Coil",
             XMLAttributes(
               'http://www.w3.org/2001/XMLSchema-instance' as "xmlns:xsi"
             , 'www.tempel.com/COIL.xsd' as "xsi:noNamespaceSchemaLocation"
             )
           , XMLForest(
               COIL_ID                as "CoilId"
             , COIL_NUMBER            as "CoilNo"
             , COIL_PO_OPERATING_UNIT as "CoilPOOperatingUnit"
             , COIL_PO_NUMBER         as "CoilPONo"
             , MILL_NUMBER            as "MillNo"
             , MILL_COIL_STATUS       as "MillCoilStatus"
             , ITEM_NUMBER            as "ItemNo"
             , COIL_WEIGHT            as "Weight"
             , WEIGHT_UOM             as "UOM"
             , DOCUMENT_NUMBER        as "DocumentNo"
             , DOCUMENT_DATE          as "DocumentDate"
             , DOCUMENT_STATUS        as "DocumentStatus"
             , DOCUMENT_TYPE          as "DocumentType"
             , DOCUMENT_SOURCE        as "DocumentSource"
             )
           , XMLAgg(
               XMLElement("Tests",
                 XMLAttributes(
                   DOC_STS_MSG    as "DocStsMsg"
                 , EQUIPMENT_CODE as "EquipmentCode"
                 , TESTER_LOGIN   as "TesterLogin"
                 , VALUE          as "Value"
                 , TEST_UOM       as "TestUnit"
                 , TEST_STATUS    as "Status"
                 , TEST_ID        as "TestId"
                 )
               )
             )
           ).extract('/*')
    FROM coil
    GROUP BY COIL_ID
           , COIL_NUMBER
           , COIL_PO_OPERATING_UNIT
           , COIL_PO_NUMBER
           , MILL_NUMBER
           , MILL_COIL_STATUS
           , ITEM_NUMBER
           , COIL_WEIGHT
           , WEIGHT_UOM
           , DOCUMENT_NUMBER
           , DOCUMENT_DATE
           , DOCUMENT_STATUS
           , DOCUMENT_TYPE
           , DOCUMENT_SOURCE ;
    

Maybe you are looking for