Extracting XML Document embeded in Envelope

Hi all
My problem is how do I extract the XML Document embeded in the Envelope
Is there a method to do the same
Since it is present in the cdata section as a string
How do i reconvert it to a XML document
I am using jdom
TIA
Sanjay

Sanjay,
We fixed that now and it's working.
FIY:
To extract data from CDATA section with JDOM extact the text of the Element as a String str and change it as InputStream
InputStream in;
SAXBuilder builder;
byte[] bytes = str.getBytes();
InputStream in = new ByteArrayInputStream(bytes);
to call then
Document doc = builder.build(in);
the new document can now be used to be parsed as usual.
Cheers
Seb

Similar Messages

  • Extracting Base64 images embeded inside XML and Convert it into PDF using Biztalk

    Hi,
    I'm presently working in a scenario, where we will be getting huge XML Files containing Base64 encoded images. The scenario goes like this :-
    1) Client will dump the XML files with embedded Base64 images in a sFTP location.
    1) Firstly, we have to extract Base64 encoded images and the metadata from the XML file.
    3) Secondly, we need to convert the extracted Base64 encoded image into multiple pdf.
    4) Then merge the PDF's into a single file.
    5) Then the merge pdf will store to a particular location.
    5) It is presume that, the file will be of very big in size ~ 1 GB XML file, so we need to take care of the performance as well.
    The sample xml looks like:-
    <ns0:tran xmlns:ns0="http://Sample.Schemas.Record_XML">
      <tranheader>
      </tranheader>
      <item>
        <image>
          <frontimage>
            <frontimage> image 1 part 1</frontimage>
          </frontimage>
          <rearimage>
            <rearimage>image 1 part 2</rearimage>
          </rearimage>
          <frontimage>
            <frontimage> image 2 part 1</frontimage>
          </frontimage>
          <rearimage>
            <rearimage>image 2 part 2</rearimage>
          </rearimage>
          <frontimage>
            <frontimage> image 3 part 1</frontimage>
          </frontimage>
          <rearimage>
            <rearimage>image 3 part 2</rearimage>
          </rearimage>
        </image>
      </item>
      <trantrailer>
      </trantrailer>
    </ns0:tran>
    Thanks & Regards

    Do you really need to use BizTalk for this requirement? This can be done better with standard .NET code through a Windows service/schedule task/ if you want to poll,
    you can implement file watcher class and poll the file as when it arrive to SFTP folder and convert the image in base64 to PDFs.
    Another point, I don’t know why you want to “convert the extracted Base64 encoded
    image into multiple pdf” (Point-3) and “Then merge the PDF's into a single file”-
    point4. You can create a single PDF file (unless I don’t know the reason for creating separate PDF file and merge it again as single PDF file)
    Anyway, if you still need to use BizTalk, you have somes options in general:
    Option1:
    Receive the message using BizTalk receive location using passthrouhg pipeline at receive end
    Create a send port with filter for receive portname. In the send port use a custom send pipeline. In the send pipeline use a custom pipeline component which will extract the base64 content from
    the XML file, convert the base64 encoded image as PDF and send the PDF file in the send port level.
    Option 2 – this options works better if you have some process based on your
    <tranheader> record:
    Receive the message using BizTalk receive location using a custom pipeline strip off, decode and store the base64
    encoded document in a temporary store (file system). So when the message is published in message box db, the message doesn’t contain the heafty encoded64 data part, message will be light weight when its published into message box.
    Process the XML message (without bae64 encoded document) with or without orchestration where you will do processing based on your
    <tranheader> record.
    In send last moment –at send port level, retrieve the stored file from the
    temporary store (file system), convert the image to PDF (i,e, hefty processing like creation of PDFs/merging) can be done at the send pipeline level and send the PDF file
    to destination.
    Following are the guidelines you should keep in mind if you need to achieve this process in BizTalk:
    Try to avoid publishing the hefty message to message box.
    Conversion of base64 to PDF can be done only using a .NET code. So your options to do this conversion in BizTalk are either in Receive pipeline/send pipeline/ .NET helper in orchestration.
    Try not to use Orchestration as much as possible, because of heavy processing and message transmission is already involved.
    Following articles shall help you in this context:
    Dealing with base64 encoded XML documents in BizTalk
    To convert Base64 to PDF/JPEG using C# code:
    TechNet-Wiki Code: Converting Base64 strings
    to Bitmap images
    Convert Image to Base64 String and Base64
    String to Image
    Base64 encoding and decoding in .NET
    Regards,
    M.R.Ashwin Prabhu
    If this answers your question please mark it accordingly. If this post is helpful, please vote as helpful by clicking the upward arrow mark next to my reply.

  • How to extract the nodes of any given XML document ???

    Hello,
    Greetings! It is an interesting forum.
    A Snippet of XML Schema PurchaseOrder.xsd as given in user guide is as follows
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xdb="http://xmlns.oracle.com/xdb"
    version="1.0" xdb:storeVarrayAsTable="true">
    <xs:element name="PurchaseOrder" type="PurchaseOrderType"
    xdb:defaultTable="PURCHASEORDER"/>
    <xs:complexType name="PurchaseOrderType" xdb:SQLType="PURCHASEORDER_T">
    <xs:sequence>
    <xs:element name="Reference" type="ReferenceType" minOccurs="1"
    xdb:SQLName="REFERENCE"/>
    <xs:element name="Actions" type="ActionsType" xdb:SQLName="ACTIONS"/>
    <xs:element name="Reject" type="RejectionType" minOccurs="0"
    xdb:SQLName="REJECTION"/>
    <xs:element name="Requestor" type="RequestorType"
    xdb:SQLName="REQUESTOR"/>
    <xs:element name="User" type="UserType" minOccurs="1"
    xdb:SQLName="USERID"/>
    <xs:element name="CostCenter" type="CostCenterType"
    xdb:SQLName="COST_CENTER"/>
    <xs:element name="ShippingInstructions" type="ShippingInstructionsType"
    xdb:SQLName="SHIPPING_INSTRUCTIONS"/>
    <xs:element name="SpecialInstructions" type="SpecialInstructionsType"
    xdb:SQLName="SPECIAL_INSTRUCTIONS"/>
    <xs:element name="LineItems" type="LineItemsType"
    xdb:SQLName="LINEITEMS"/>
    </xs:sequence>
    </xs:complexType>
    full schema is available in url
    http://download-west.oracle.com/docs/cd/B12037_01/appdev.101/b10790/xdb03usg.htm#BABBGIED
    The views use XPath expressions and functions such as extractValue() to define the mapping between columns in the view and nodes in the XML document. The following view is created on purchase order schema.
    Creating Relational Views On XML Content
    CREATE OR REPLACE view PURCHASEORDER_MASTER_VIEW
    (REFERENCE, REQUESTOR, USERID, COSTCENTER,
    SHIP_TO_NAME,SHIP_TO_ADDRESS, SHIP_TO_PHONE,
    INSTRUCTIONS)
    AS
    SELECT extractValue(value(p),'/PurchaseOrder/Reference'),
    extractValue(value(p),'/PurchaseOrder/Requestor'),
    extractValue(value(p),'/PurchaseOrder/User'),
    extractValue(value(p),'/PurchaseOrder/CostCenter'),
    extractValue(value(p),'/PurchaseOrder/ShippingInstructions/name'),
    extractValue(value(p),'/PurchaseOrder/ShippingInstructions/address'),
    extractValue(value(p),'/PurchaseOrder/ShippingInstructions/telephone'),
    extractValue(value(p),'/PurchaseOrder/SpecialInstructions')
    FROM PURCHASEORDER p;
    When we register XML Schema in Oracle 9i, the schema elements of XML documents are stored as XMLType, that is, stored using object-relational storage techniques.
    For a small schema, we could build the above view manually, but for large/nested schema, if we have query to build XML documents node list, it will help us to build Relational Views on XML Content.
    How do we extract the nodes of any given XML document through O-R structures or XML DB using XML DB functions?
    Any alternate thoughts are welcome.
    I appreciate your help.
    Regards
    Ram

    Ram
    Once again, I do not think that you can solve the problem you are trying to solve. Fundamentally you need to determine for a given element of a given complex type what are it's child elements. For each of those elements you then need to find out whether or not it in turn has child elements...
    Then you have to think about elements defined as ref rather than type, elements that are substituteable, and the rest of possibilities that can be described with XML Schema.
    If you can solve that problem you're a better man than I as the saying goes. Anyone rather than give you a fish, I'll show you how to at least put a worm on the hook..
    The following query gets the names of the elements inside a each of the global complex types
    Good luck, if you come up with a query to do this I'd love to see it...
    SQL> column COMPLEX_TYPE format A32
    SQL> column ELEMENT format A32
    SQL> --
    SQL> select extractvalue
    2 (
    3 value(ct),
    4 '/xs:complexType/@name',
    5 'xmlns:xs="http://www.w3.org/2001/XMLSchema"'
    6 ) COMPLEX_TYPE,
    7 extractvalue
    8 (
    9 value(et),
    10 '/xs:element/@name',
    11 'xmlns:xs="http://www.w3.org/2001/XMLSchema"'
    12 ) ELEMENT
    13 from resource_view,
    14 table
    15 (
    16 xmlsequence
    17 (
    18 extract
    19 (
    20 res,
    21 '/r:Resource/r:Contents/xs:schema/xs:complexType',
    22 'xmlns:r="http://xmlns.oracle.com/xdb/XDBResource.xsd"
    23 xmlns:xs="http://www.w3.org/2001/XMLSchema"')
    24 )
    25 ) ct,
    26 table
    27 (
    28 xmlsequence
    29 (
    30 extract
    31 (
    32 value(ct),
    33 '/xs:complexType/*/xs:element',
    34 'xmlns:xs="http://www.w3.org/2001/XMLSchema"'
    35 )
    36 )
    37 ) et
    38 where equals_path(res,'/home/SCOTT/poSource/xsd/purchaseOrder.xsd') = 1
    39 /
    COMPLEX_TYPE ELEMENT
    -------------------------------- ------------------------PurchaseOrderType Reference
    PurchaseOrderType Actions
    PurchaseOrderType Reject
    PurchaseOrderType Requestor
    PurchaseOrderType User
    PurchaseOrderType CostCenter
    PurchaseOrderType ShippingInstructions
    PurchaseOrderType SpecialInstructions
    PurchaseOrderType LineItems
    LineItemsType LineItem
    LineItemType Description
    LineItemType Part
    ActionsType Action
    RejectionType User
    RejectionType Date
    RejectionType Comments
    ShippingInstructionsType name
    ShippingInstructionsType address
    ShippingInstructionsType telephone
    19 rows selected.

  • Embedding XSL in XML document

    Hi
    I am new to this particular forum. I had some query regarding embedding XSL .
    Can we embedd the XSL stylesheet in the XML document itself.
    I searched this forum and got some similar queries but the output isn't working. Can anyone put a working example.
    I have got the following XSL stylesheet:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <body>
    <table border="1" width="100%" cellpadding="1">
    <tr bgcolor="#FFFF99">
    <th style="font-family:arial unicode ms;font-size:100%" align="center">Serial number </th>
    <th style="font-family:arial unicode ms;font-size:100%" align="center">Site number </th>
    </tr>
    <xsl:for-each select="Master/RECORD">
    <xsl:if test="SR_NO &gt; 0">
    <tr>
    <td style="font-family:arial unicode ms;font-size:80%" align="right"><xsl:value-of select="SR_NO"/></td>
    <td style="font-family:arial unicode ms;font-size:80%" align="right"><xsl:value-of select="ACR_SNO"/></td>
    </tr>
    </xsl:if>
    </xsl:for-each>
    </table>
    </body>
    </xsl:template>
    </xsl:stylesheet>
    The XML document is as below:
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type="text/xsl" href="archivingmaster.xsl"?>
    <Master>
    <RECORD>
    <SR_NO>1</SR_NO>
    <ACRSNO>1</ACR_SNO>
    </RECORD>
    <RECORD>
    <SR_NO>2</SR_NO>
    <ACRSNO>2</ACR_SNO>
    </RECORD>
    </Master>
    Thanks in advance
    Ameya.

    I have already gone through that link and searched for this on the net. But it doesn't seem to work on my Mozilla Firefox browser.
    Can anybody put a working example if possible.
    Thanks
    Ameya.

  • How to extract the actual XML document from soap message?

    My problem is " how to extract the actual XML document from soap message? "
    i just want to extract the attachment i.e. (pure XML document without any soap header or envolope).
    i could be ver thank full if u could solve my problem.
    [email protected]

    Hi,
    This is some skeleton code for extracting an attachment from a SOAPMessage.
    import javax.activation.DataHandler.;
    import javax.xml.soap.*;
    import javax.xml.message.*;
    Iterator allAttachments = message.getAttachments();
    AttachmentPart ap1 = null;
    while(allAttachments.hasNext()){
    ap1 = (AttachmentPart)allAttachments.next();
    //Check that the attachment is correct one. By looking at its mime headers
    //Convert the attachment part into its DOM representation:
    if(ap1.getContentType() == "text/xml"){
    //Use the activation dataHandler class to extract the content, then create a StreamSource from
    //the content.
    DataHandler attachmentContent = ap1.getDataHandler();
    StreamSource attachmentStream = new StreamSource(attachmentContent.getInputStream());
    DOMResult domAttachment = getDOMResult(attachmentStream);
    domAttachment holds an xml representation of the attachment.
    Hope this helps.

  • Extracting and Loading XML document

    We need to extract and load an XML document into the database
    For e.g.
    <ROW> <EMP_ID>1</EMP_ID> <EMP_NAME>SSK</EMP_NAME>
    <RESUME> Resume of sssk
    </RESUME>
    </ROW>
    We need to load emp_id, emp_name to emp_id, emp_name field in the database and <RESUME> field to a CLOB.
    The table is as follows
    EMP_ID NUMBER
    EMP_NAME VARCHAR2(100)
    RESUME CLOB
    How exactly is this done using the XSU utility? Does it support loading of <RESUME> data in this case to a CLOB.
    Where could I find examples of doing this.
    null

    The "first child" of most of your elements is a white-space node containing a newline character. Your code incorrectly assumes it is an element node.

  • XMLType.extract and namespace in XML document

    I found some strange behaviour of XMLType:
    I create table by means of:
    create table conf (id varchar2(10), info sys.xmltype);
    I insert xml document into table.
    The text of xml document is:
    <conference finishPage="/regfinish_en.jsp" id="CID003" xmlns="http://stud.aanet.ru/conf">
    <conferencetitle>title1 </conferencetitle>
    </conference>
    Then I execute:
    select a.info.extract('//conferencetitle/text()').getstringval() from conf a
    result is empty string.
    I replace document with
    <conference finishPage="/regfinish_en.jsp" id="CID003" >
    <conferencetitle>title1 </conferencetitle>
    </conference>
    Now result of statement
    select a.info.extract('//conferencetitle/text()').getstringval() from conf a
    is "title1"
    But than I replace document with
    <tc:conference finishPage="/regfinish_en.jsp" id="CID003" xmlns:tc="http://stud.aanet.ru/conf">
    <tc:conferencetitle>title1 </tc:conferencetitle>
    </tc:conference>
    and execute
    select a.info.extract('//tc:conferencetitle/text()').getstringval() from conf a
    or
    select a.info.extract('//t:conferencetitle/text()').getstringval() from conf a
    The result is "title1"
    I receive this result on Oracle for Linux 9.0.1.3.

    hi, before you set the attribute, you need to create a Namespace element preliminary.
    Try the following code:
    ELEMENT = DOCUMENT->CREATE_SIMPLE_ELEMENT_NS(
    NAME = 'abap'
    PREFIX = 'asx'
    PARENT = DOCUMENT ).
    ATTRIBUTE = DOCUMENT->create_namespace_decl(
    NAME = 'XMLNS'
    PREFIX = 'asx'
    URI = 'http://www.sap.com/abapxml').
    ELEMENT->SET_ATTRIBUTE_NODE_NS(
    NEW_ATTR = ATTRIBUTE).
    Hope my reply will be useful.
    thanks

  • Extracting Values from XML-Document in pl/sql

    Hello!
    I need to extract the content of the following extract:
    <ns1:OXERPGetArticlesResponse xmlns:ns1="OXERPService">
    <ns1:OXERPGetArticlesResult>
    <ns1:OXERPType>
    <ns1:aResult>
    <ns1:ArrayOfString>
    <ns1:string>OXID</ns1:string>
    <ns1:string>531f91d4ab8bfb24c4d04e473d246d0b</ns1:string>
    </ns1:ArrayOfString>
    <ns1:ArrayOfString>
    <ns1:string>OXARTNUM</ns1:string>
    <ns1:string>0601-85-069</ns1:string>
    </ns1:ArrayOfString>
    <ns1:ArrayOfString>
    <ns1:string>OXPRICE</ns1:string>
    <ns1:string>100.5</ns1:string>
    </ns1:ArrayOfString>
    </ns1:aResult>
    <ns1:blResult>true</ns1:blResult>
    <ns1:sMessage/>
    </ns1:OXERPType>
    <ns1:OXERPType>
    <ns1:aResult>
    <ns1:ArrayOfString>
    <ns1:string>OXID</ns1:string>
    <ns1:string>531a8af7d9a9a5bb53b65a2b9a5356e5</ns1:string>
    </ns1:ArrayOfString>
    <ns1:ArrayOfString>
    <ns1:string>OXARTNUM</ns1:string>
    <ns1:string>0601-85-069-1</ns1:string>
    </ns1:ArrayOfString>
    <ns1:ArrayOfString>
    <ns1:string>OXPRICE</ns1:string>
    <ns1:string>89.9</ns1:string>
    </ns1:ArrayOfString>
    </ns1:aResult>
    <ns1:blResult>true</ns1:blResult>
    <ns1:sMessage/>
    </ns1:OXERPType>
    </ns1:OXERPGetArticlesResult>
    </ns1:OXERPGetArticlesResponse>
    The output should be:
    OXID OXARTNUM OXPRICE
    531f91d4ab8bfb24c4d04e473d246d0b 0601-85-069 100.5
    531a8af7d9a9a5bb53b65a2b9a5356e5 0601-85-069-1 89.9
    The count of rows and columns is variable.
    I want to do this by using xmltype.extract but I found no way to create a loop over the content of the xml document.
    Hopefully someone can help me!
    Regards
    Herbert

    OK, then you should be able to use something like :
    SQL> var xmldoc clob;
    SQL> begin
      2   :xmldoc := '<ns1:OXERPGetArticlesResponse xmlns:ns1="OXERPService">
      3  <ns1:OXERPGetArticlesResult>
      4  <ns1:OXERPType>
      5  <ns1:aResult>
      6  <ns1:ArrayOfString>
      7  <ns1:string>OXID</ns1:string>
      8  <ns1:string>531f91d4ab8bfb24c4d04e473d246d0b</ns1:string>
      9  </ns1:ArrayOfString>
    10  <ns1:ArrayOfString>
    11  <ns1:string>OXARTNUM</ns1:string>
    12  <ns1:string>0601-85-069</ns1:string>
    13  </ns1:ArrayOfString>
    14  <ns1:ArrayOfString>
    15  <ns1:string>OXPRICE</ns1:string>
    16  <ns1:string>100.5</ns1:string>
    17  </ns1:ArrayOfString>
    18  </ns1:aResult>
    19  <ns1:blResult>true</ns1:blResult>
    20  <ns1:sMessage/>
    21  </ns1:OXERPType>
    22  <ns1:OXERPType>
    23  <ns1:aResult>
    24  <ns1:ArrayOfString>
    25  <ns1:string>OXID</ns1:string>
    26  <ns1:string>531a8af7d9a9a5bb53b65a2b9a5356e5</ns1:string>
    27  </ns1:ArrayOfString>
    28  <ns1:ArrayOfString>
    29  <ns1:string>OXARTNUM</ns1:string>
    30  <ns1:string>0601-85-069-1</ns1:string>
    31  </ns1:ArrayOfString>
    32  <ns1:ArrayOfString>
    33  <ns1:string>OXPRICE</ns1:string>
    34  <ns1:string>89.9</ns1:string>
    35  </ns1:ArrayOfString>
    36  </ns1:aResult>
    37  <ns1:blResult>true</ns1:blResult>
    38  <ns1:sMessage/>
    39  </ns1:OXERPType>
    40  </ns1:OXERPGetArticlesResult>
    41  </ns1:OXERPGetArticlesResponse>';
    42  end;
    43  /
    Procédure PL/SQL terminée avec succès.
    SQL> SELECT x1.rec_id
      2       , x2.col_name
      3       , x2.col_value
      4  FROM XMLTable(
      5        XMLNamespaces('OXERPService' as "ns1"),
      6        '/ns1:OXERPGetArticlesResponse/ns1:OXERPGetArticlesResult/ns1:OXERPType/ns1:aResult'
      7        passing xmltype(:xmldoc)
      8        columns rec_id for ordinality
      9              , rec_xml xmltype path 'ns1:ArrayOfString'
    10       ) x1,
    11       XMLTable(
    12        XMLNamespaces('OXERPService' as "ns1"),'/ns1:ArrayOfString'
    13        passing x1.rec_xml
    14        columns col_name  varchar2(30) path 'ns1:string[1]'
    15              , col_value varchar2(30) path 'ns1:string[2]'
    16       ) x2
    17  ;
        REC_ID COL_NAME                       COL_VALUE
             1 OXID                           531f91d4ab8bfb24c4d04e473d246d
             1 OXARTNUM                       0601-85-069
             1 OXPRICE                        100.5
             2 OXID                           531a8af7d9a9a5bb53b65a2b9a5356
             2 OXARTNUM                       0601-85-069-1
             2 OXPRICE                        89.9
    6 ligne(s) sélectionnée(s).You mentioned that the number of column(s) is not known in advance. That's gonna be a problem to present the data column-wise.
    Version 11g has the PIVOT feature, but still you have to know how many columns there will be in the result set.
    How are you going to use the data after extraction?
    Maybe we could advise some other techniques more relevant for your requirement.

  • Error while loading an XML document using a structured application

    Hi,
    I try to load an XML document using a structured application defined in the default structapps.fm
    My code is shown down, extracted from the FDK API code sample.
    Problem, I always have the same message :
    "Cannot find the file named e:\xml\AdobeFrameMaker10\file. Make sure that the file exists. "
    Where "e:\xml\AdobeFrameMaker10\" is my install directory.
    So I assume that frame try to find the structapps.fm file but does not find it.
    What else can it be ?
    Does anyone knowns how to achieve this simple task using extendScript ?
    Thanks for any comments, Pierre
    function openXMLFile(myLastFile) {
        var filename = myLastFile.openDlg("Choose XML file ...", "*.xml", false);
        if (filename != null) {
            /* Get default open properties. Return if it can’t be allocated. */
            var params = GetOpenDefaultParams();
            /* Set properties to open an XML document*/
            /*Specify XML as file type to open*/
            var i = GetPropIndex(params, Constants.FS_OpenAsType)
            params[i].propVal.ival = Constants.FV_TYPE_XML;
            /* Specify the XML application to be used when opening the document.*/
            i = GetPropIndex(params, Constants.FS_StructuredOpenApplication)
            params[i].propVal.sval = "myApp";
            i = GetPropIndex(params, Constants.FS_FileIsOldVersion)
            params[i].propVal.ival = Constants.FV_DoOK
            i = GetPropIndex(params, Constants.FS_FontNotFoundInDoc)
            params[i].propVal.ival = Constants.FV_DoOK
            i = GetPropIndex(params, Constants.FS_FileIsInUse)
            params[i].propVal.ival = Constants.FV_DoCancel
            i = GetPropIndex(params, Constants.FS_AlertUserAboutFailure)
            params[i].propVal.ival = Constants.FV_DoCancel
            /*The structapps.fm file containing the specified application must have
            already been read. The default structapps.fm file is read when FrameMaker is
            opened so this shouldn't be a problem if the application to be used is
            listed in the structapps.fm file.*/
            var retParm = new PropVals()
            var fileObj = Open(filename, params, retParm);
            return fileObj
        } else {
            return null;

    Pierre,
    Depending on the object "myLastFile", the method openDlg might not even exist (if the myLastFile object is not a File object, for instance). And I do not see any need for the myLastFile anyhow, as you are presenting a dialog to select a file to open. I recommend using the global ChooseFile( ) method instead. This will give you a filename as string in full path notation, or null when no file was selected in the dialog. I am not sure what your ExtendScript documentation states about the return value for ChooseFile, but if that differs from what I am telling you here, the documentation is wrong. So, if you replace the first lines of your code with the following it should work:
    function openXMLFile ( ) {
        var filename = ChooseFile ( "Choose XML file ...", "", "*.xml", Constants.FV_ChooseSelect );
    While writing this, I see that Russ has already given you the same advice. Use the symbolic constant value I indicated to use the ChooseFile dialog to select a single file (it can also be used to select a directory or open a file - but you want to control the opening process yourself). Note that this method allows you to set a start directory for the dialog (second parameter). The ESTK autocompletion also gives you a fifth parameter "helplink" which is undocumented and can safely be ignored.
    Good luck
    Jang

  • Problem replacing Null nodes with real values in XML documents...

    Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
    Our friends in Java land are insisting on passing data between Java and PL/SQL using fairly small XML documents (don't ask). I then need to extract the input parameter values and pass them, on to the stored procedures that actually do the work. These return a result which needs to be returned to the java layer in the output XML document.
    Here is a cut down version of the input XML...
    <ParameterList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Parameter>
    <Id>1</Id>
    <Result xsi:nil="true"/>
    </Parameter>
    <Parameter>
    <Id>2</Id>
    <Result xsi:nil="true"/>
    </Parameter>
    </ParameterList>
    and this is an example of what I am expected to return...
    <ParameterList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Parameter>
    <Id>1</Id>
    *<Result>SUCCESS</Result>*
    </Parameter>
    <Parameter>
    <Id>2</Id>
    *<Result>WARNING</Result>*
    </Parameter>
    </ParameterList>
    i.e. I am expected to replace the value of the Result node with a string indicating the succes or otherwise of the underlying PL/SQL process.
    I am extracting the input values using the DBMS_XMLDOM functions and naively assumed that DBMS_XMLDOM.SETNODEVALUE could be used to update the value in the Result node - It didn't work so I resorted to reading the documentation which revealed that it will not work for a null node.
    Am I going to have to use XSLT to generate the output XML from the Input and incorprate the result? Or is there a simpler way?
    I have used XSLT in Oracle before and still have the nervous tick...

    Thanks A Non,
    With your suggestion and a bit of help from the w3schools.com xml dom tutorial I eventually managed to work out how to do this.
    Here is the code (with all my debug stuff in so it looks worse than it is...)
    create or replace
    PROCEDURE ExtractXMLValues (p_inXml IN CLOB ) IS
    l_string VARCHAR2(4000);
    l_value VARCHAR2(4000);
    l_DOM_doc dbms_xmldom.DOMDocument;
    l_DOM_node dbms_xmldom.DOMNode;
    l_new_DOM_node dbms_xmldom.DOMNode;
    l_new_element dbms_xmldom.DOMElement;
    l_new_DOM_nodevalue dbms_xmldom.DOMNode;
    l_value_Node dbms_xmldom.DOMNode;
    l_parameter_Node dbms_xmldom.DOMNode;
    --l_DOM_nodelist    dbms_xmldom.DOMNodeList;
    l_Result_DOM_node dbms_xmldom.DOMNode;
    BEGIN
    l_DOM_doc := dbms_xmldom.newDomDocument(p_inXml);
    l_DOM_node := dbms_xmldom.makeNode(l_DOM_doc);
    dbms_xmldom.writeToBuffer(l_DOM_node, l_string);
    dbms_output.put_line('1 ' || l_string);
    l_parameter_node := dbms_xslprocessor.selectSingleNode(l_DOM_node,'//Parameter');
    -- get the current values in the XML document for Id and Result
    l_Result_DOM_node := dbms_xslprocessor.selectSingleNode(l_DOM_node,'//Id');
    l_value_Node := dbms_xmldom.getFirstChild(l_Result_DOM_node);
    l_value := dbms_xmldom.getnodevalue(l_value_Node);
    dbms_xmldom.writeToBuffer(l_Result_DOM_node, l_string);
    dbms_output.put_line('2 ' || l_string || ' : ' || l_value);
    l_Result_DOM_node := dbms_xslprocessor.selectSingleNode(l_DOM_node,'//Result');
    l_value_Node := dbms_xmldom.getFirstChild(l_Result_DOM_node);
    l_value := dbms_xmldom.getnodevalue(l_value_Node);
    dbms_xmldom.writeToBuffer(l_Result_DOM_node, l_string);
    dbms_output.put_line('3 ' || l_string || ' : ' || l_value);
    -- create new Result node
    l_new_DOM_node      := dbms_xmldom.makenode(dbms_xmldom.createElement(l_DOM_doc, 'Result'));
    dbms_xmldom.writeToBuffer(l_new_DOM_node, l_string);
    dbms_output.put_line('4 New node : ' || l_string);
    -- create a value for it
    l_new_DOM_nodevalue := dbms_xmldom.makenode(dbms_xmldom.createtextnode(l_DOM_doc, 'SUCCESS'));
    dbms_xmldom.writeToBuffer(l_new_DOM_nodevalue, l_string);
    dbms_output.put_line('5 New node value : ' || l_string);
    -- add the value to the new Result node
    l_new_DOM_nodevalue := dbms_xmldom.appendchild(l_new_DOM_node,  l_new_DOM_nodevalue);
    dbms_xmldom.writeToBuffer(l_new_DOM_node, l_string);
    dbms_output.put_line('6 New node : ' || l_string);
    -- replace the old node with the new one
    l_Result_DOM_node := dbms_xmldom.replaceChild(l_parameter_node, l_new_DOM_node, l_Result_DOM_node);
    dbms_xmldom.writeToBuffer(l_parameter_node, l_string);
    dbms_output.put_line('6 parameter node : ' || l_string);
    dbms_xmldom.writeToBuffer(l_DOM_node, l_string);
    dbms_output.put_line('7 Updated document ' || l_string);
    dbms_xmldom.freeDocument(l_DOM_doc);
    END ExtractXMLValues;
    and the output...
    1 <ParameterList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Parameter>
    <Id>1</Id>
    <Result xsi:nil="true"/>
    </Parameter>
    </ParameterList>
    2 <Id>1</Id> : 1
    3 <Result xsi:nil="true"/> :
    4 New node : <Result/>
    5 New node value : SUCCESS
    6 New node : <Result>SUCCESS</Result>
    6 parameter node : <Parameter>
    <Id>1</Id>
    <Result>SUCCESS</Result>
    </Parameter>
    7 Updated document <ParameterList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Parameter>
    <Id>1</Id>
    *<Result>SUCCESS</Result>*
    </Parameter>
    </ParameterList>
    One question, why do the dbms_xmldom functions return the Old value? I was expecting the returned value to be the updated node.
    Edited by: Lone voice on May 14, 2009 11:24 AM

  • Is there a way to modify the style sheet so that it transforms an XML document with empty tags as tag / ?

    I have extracted some code from codeproject to
    reindent an XML document. Does anyone know how I can modify the stylesheet to make it so that the transform of an XML file will result in empty tags showing up as <tag /> instead of <tag></tag>?
    // http://www.codeproject.com/Articles/43309/How-to-create-a-simple-XML-file-using-MSXML-in-C
    MSXML2::IXMLDOMDocumentPtr FormatDOMDocument(MSXML2::IXMLDOMDocumentPtr pDoc)
    LPCSTR const static szStyleSheet =
    R"!(<?xml version="1.0" encoding="utf-8"?>)!"
    R"!(<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">)!"
    R"!( <xsl:output method="xml" indent="yes"/>)!"
    R"!( <xsl:template match="@* | node()">)!"
    R"!( <xsl:copy>)!"
    R"!( <xsl:apply-templates select="@* | node()"/>)!"
    R"!( </xsl:copy>)!"
    R"!( </xsl:template>)!"
    R"!(</xsl:stylesheet>)!";
    MSXML2::IXMLDOMDocumentPtr pXmlStyleSheet;
    pXmlStyleSheet.CreateInstance(__uuidof(MSXML2::DOMDocument60));
    pXmlStyleSheet->loadXML(szStyleSheet);
    MSXML2::IXMLDOMDocumentPtr pXmlFormattedDoc;
    pXmlFormattedDoc.CreateInstance(__uuidof(MSXML2::DOMDocument60));
    CComPtr<IDispatch> pDispatch;
    HRESULT hr = pXmlFormattedDoc->QueryInterface(IID_IDispatch, (void**)&pDispatch);
    if (SUCCEEDED(hr))
    _variant_t vtOutObject;
    vtOutObject.vt = VT_DISPATCH;
    vtOutObject.pdispVal = pDispatch;
    vtOutObject.pdispVal->AddRef();
    hr = pDoc->transformNodeToObject(pXmlStyleSheet, vtOutObject);
    //By default it is writing the encoding = UTF-16. Let us change the encoding to UTF-8
    // <?xml version="1.0" encoding="UTF-8"?>
    MSXML2::IXMLDOMNodePtr pXMLFirstChild = pXmlFormattedDoc->GetfirstChild();
    // A map of the a attributes (vesrsion, encoding) values (1.0, UTF-8) pair
    MSXML2::IXMLDOMNamedNodeMapPtr pXMLAttributeMap = pXMLFirstChild->Getattributes();
    MSXML2::IXMLDOMNodePtr pXMLEncodNode = pXMLAttributeMap->getNamedItem(_T("encoding"));
    pXMLEncodNode->PutnodeValue(_T("UTF-8")); //encoding = UTF-8
    return pXmlFormattedDoc;
    Or, if there is some other method for reindenting a MSXML2::IXMLDOMDocumentPtr object where I can specify how I want empty tags to be stored, that would be great too.  However, I don't want it to lose its status of an MSXML2::IXMLDOMDocumentPtr object.
     I.e. I would like to still perform operations on the result as if it was still an MSXML2::IXMLDOMDocumentPtr object.
    Thanks,
    A
    Adrian

    If anyone is interested, I got an answer on StackOverflow
    here.
    Adrian

  • How to save sections of a single XML Document to multiple tables ?

    Firstly, I apologise for the long e-mail but I feel it's necessary in order to clarify my problem/question.
    The XML document representation below stores information about a particular database. From the information in the XML document you can tell that there is a single database called "tst" which contains a single table called "tst_table". This table in turn has two columns called "CompanyName" & "Country".
    I want to use Oracle's XML SQL Utility to store this information into three seperate database tables. Specifically, I want to store the information pertaining to the database (i.e. name etc.) in one table, the information pertaining to the table (name, no. of columns etc.) in another and the information pertaining to the columns (name, type etc.) in yet another table.
    I have seen samples where an entire XML Document is saved to a database table but I cannot find any examples where different sections of a single XML Document are saved into different database tables using the XML SQL Utility.
    Can you please tell me the best approach to take in order to accomplish this . Does it involve creating an XMLDocument and then extracting the relevant sections as XMLDocumentFragment's, retrieving the String representations of these XMLDocumentFragment's and passing these strings to the OracleXMLSave.insertXml() method.
    Is this the best approach to take or are there any other, perhaps more efficient or elegant, ways of doing this ?
    Thanks in advance for your help
    - Garry
    <DATABASE id="1" name="tst">
    <TABLES>
    <TABLE name="tst_table">
    <NAME>Customers</NAME>
    <COLUMNS>
    <COLUMN num="1"> <COLID>2</COLID>
    <COLNAME>CompanyName</COLNAME>
    <COLTYPE>Text</COLTYPE>
    </COLUMN>
    <COLUMN num="2">
    <COLID>3</COLID>
    <COLNAME>Country</COLNAME>
    <COLTYPE>Text</COLTYPE>
    </COLUMN>
    </COLUMNS>
    </TABLE>
    </TABLES>
    </DATABASE>
    null

    See this thread;
    {thread:id=2180799}
    Jeff

  • [Date & Time] - In xml document

    Hello
    How can I specify a default output format for date stored in XML document.
    When I querying via extract() statement (with OCI) output date is YYYY-MM-DDT01:00:00.
    I wish specified this format : DD/MM/YYYY HH24:MI.
    I can't use TO_DATE or TO_CHAR for non-technical reason, I want set a custom output format.
    is it possible ? maybe a NLS parameter ?
    thanks for ur help.
    platform:Oracle 10gR2
    Jacques H

    you may set this parameter at session level -
    http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/initparams122.htm#REFRN10119
    best regards.

  • XSQL: How to embed the XML document(s) instead of posting?

    Dear all.
    I'm trying to use XSQL for a self-contained database schema setup. This setup should be able to handle DML (INSERT/UPDATE/DELETE), PL/SQL calls etc and I thought XSQL looks perfect for the job. As such, I wouldn't be using XSQL as a publishing framework but as kind of an ETL tool. The only output I would be interested in would be the xsql-status in order to check that the number of rows processed matches my expectations. I would prefer XSQL to run entirely within the database and not depend on any servlet container.
    However, it seems that XSQL's only way of obtaining the canonical XML (ROWSET/ROW) that is used by xsql:insert-request/xsql:update-request/xsql:delete-request is through HTTP POST/GET. It doesn't seem that it's possible to embed the XML directly in the page, nor does it seem possible to handle more than one XML.
    I'm trying to achieve something like this:
    <?xml version="1.0"?>
    <page connection="scott" xmlns:xsql="urn:oracle-xsq">
    <xsql:insert-request table="DEPT">
    <ROWSET>
    <ROW>
    <DEPTNO>-10</DEPTNO>
    <DNAME>NEW DEPT 1</DNAME>
    <LOC>COPENHAGEN</LOC>
    </ROW>
    <ROW>
    <DEPTNO>-20</DEPTNO>
    <DNAME>NEW DEPT 2</DNAME>
    <LOC>LONDON</LOC>
    </ROW>
    </ROWSET>
    </xsql:insert-request>
    <xsql:insert-request table="EMP">
    <ROWSET>
    <ROW>
    <EMPNO>-10</EMPNO>
    <ENAME>NEW EMP 1</ENAME>
    </ROW>
    <ROW>
    <EMPNO>-20</EMPNO>
    <ENAME>NEW EMP 2</ENAME>
    </ROW>
    </ROWSET>
    </xsql:insert-request>
    </page>
    or perhaps
    <?xml version="1.0"?>
    <page connection="scott" xmlns:xsql="urn:oracle-xsq">
    <request>
    <parameters>
    <dept>
    <ROWSET>
    <ROW>
    <DEPTNO>-10</DEPTNO>
    <DNAME>NEW DEPT 1</DNAME>
    <LOC>COPENHAGEN</LOC>
    </ROW>
    <ROW>
    <DEPTNO>-20</DEPTNO>
    <DNAME>NEW DEPT 2</DNAME>
    <LOC>LONDON</LOC>
    </ROW>
    </ROWSET>
    </dept>
    </parameters>
    </request>
    <xsql:insert-request table="DEPT" param="dept"/>
    <xsql:insert-request table="EMP" param="emp"/>
    </page>
    I need both INSERT/UPDATE/DELETE so xsql:insert-param isn't enough, would also need an xsql:update-param and xsql:delete-param.
    A way of referring to the canonical XML through an URI or XPath expression (referring to a registered XML document in the database) would also be cool.
    Perhaps implementing custom action handlers would work but not sure whether they'll be able to refer to any child XML elements within them? Furthermore, the syntax for these would also be slightly inconvenient:
    <xsql:action handler=com.ellebaek-consulting.xsql.InsertActionHandler" table="DEPT">
    My alternative would be to re-implement an extended version of XSQL (XSQLX :-)?) but I'm trying to avoid that.
    Any pointers and ideas are very much appreciated.
    Thanks in advance.
    Best regards
    Finn Ellebaek Nielsen

    Hi.
    Thanks for your reply but the article only talks about how to query data with XSQL and I need to INSERT/UPDATE/DELETE data embedded in XSQL pages into the database so I'm afraid that the article doesn't apply.
    Cheers
    Finn

  • HTML tags in XML document

    I have an application that loads information from an XML file
    and displays in a dynamic text box. That works great. Now, I want
    to add HTML tags to the information in the XML file so the dynamic
    text box will format it. If I add straight html:
    <Answer1>of earth, <b>air</b>, fire, and
    water.</Answer1>
    I get a null displayed in the text box. If I encode
    <Answer1>of earth,
    &gt;b&lt;air&gt;/&lt;, fire, and
    water.</Answer1>
    Then it displays
    of earth, <b>air</b>, fire, and water.
    Any help on how to embedded html code into an XML document so
    a dynamic text box uses the html code?
    Thanks.

    Just use CDATA tags around your HTML values, eg:
    <Answer1><![CDATA[of earth, <b>air</b>,
    fire, and water.]]></Answer1>
    HTH.

Maybe you are looking for