Need help to read a _fmb. XML and write the properties of the element to a table

We want to retrieve all the properties of elements of forms at a table.
Table has this format:
Describing oracle_forms_item_list....
NAME                            Null?     Type
------------------------------- --------- -----
FORM_NAME                       NOT NULL  VARCHAR2(100)
ITEM_NAME                       NOT NULL  VARCHAR2(50)
ITEM_TYPE                       NOT NULL  VARCHAR2(50)
PROPERTY                        NOT NULL  VARCHAR2(50)
PROPERTY_VALUE                            VARCHAR2(500)
We want to get all D_e_p_a_r_t_m_e_n_t_s.fmb items (blocks, paintings, text etc.). So first convert us it to XML and we get the D_e_p_a_r_t_m_e_n_t_s_fmb.xml file which is shown below.
<?xml version = '1.0' encoding = 'UTF-8'?>
<Module version="101020002" xmlns="http://xmlns.oracle.com/Forms">
   <FormModule Name="D_E_P_A_R_T_M_E_N_T_S" ConsoleWindow="WINDOW1" DirtyInfo="true" MenuModule="DEFAULT&amp;SMARTBAR" Title="MODULE5">
      <Coordinate CharacterCellWidth="7" CoordinateSystem="Real" CharacterCellHeight="14" RealUnit="Point" DefaultFontScaling="true"/>
      <Alert Name="ALERT6" DirtyInfo="true" DefaultAlertButton="Button 2" AlertMessage="Do you want to save ???" Button2Label="No" AlertStyle="Caution" Title="Saving........................... &lt;>" Button1Label="Yes"/>
      <Block Name="DEPT" ScrollbarTabPageName="" DirtyInfo="true" QueryDataSourceName="dept" ScrollbarWidth="14" ScrollbarYPosition="39" ShowScrollbar="true" ScrollbarCanvasName="CANVAS4" ScrollbarLength="70" RecordsDisplayCount="5" ScrollbarXPosition="237">
         <Item Name="DEPTNO" DirtyInfo="true" Height="14" PromptAlign="Center" XPosition="14" Width="27" ColumnName="DEPTNO" DataType="Number" YPosition="39" PromptDisplayStyle="First Record" ItemsDisplay="0" MaximumLength="3" PromptAttachmentEdge="Top" ItemType="Text Item" TabPageName="" CanvasName="CANVAS4" Prompt="Deptno"/>
         <Item Name="DNAME" DirtyInfo="true" Height="14" PromptAlign="Center" XPosition="41" Width="101" ColumnName="DNAME" YPosition="39" Tooltip="Dep name goooes here." DataLengthSemantics="BYTE" Hint="Entter the department name" PromptDisplayStyle="First Record" ItemsDisplay="0" MaximumLength="14" PromptAttachmentEdge="Top" ItemType="Text Item" TabPageName="" CanvasName="CANVAS4" Prompt="Dname"/>
         <Item Name="LOC" DirtyInfo="true" Height="14" PromptAlign="Center" XPosition="142" Width="95" ColumnName="LOC" YPosition="39" DataLengthSemantics="BYTE" PromptDisplayStyle="First Record" ItemsDisplay="0" MaximumLength="13" PromptAttachmentEdge="Top" ItemType="Text Item" TabPageName="" CanvasName="CANVAS4" Prompt="Loc"/>
         <DataSourceColumn Type="Query" DSCType="NUMBER" DSCNochildren="false" DSCLength="0" DSCPrecision="2" DSCName="DEPTNO" DSCScale="0" DSCMandatory="false"/>
         <DataSourceColumn Type="Query" DSCType="VARCHAR2" DSCNochildren="false" DSCLength="14" DSCPrecision="0" DSCName="DNAME" DSCScale="0" DSCMandatory="false"/>
         <DataSourceColumn Type="Query" DSCType="VARCHAR2" DSCNochildren="false" DSCLength="13" DSCPrecision="0" DSCName="LOC" DSCScale="0" DSCMandatory="false"/>
      </Block>
      <Canvas Name="CANVAS4" ViewportHeight="324" DirtyInfo="true" Height="324" WindowName="WINDOW1" Width="540" ViewportWidth="540" CanvasType="Content">
         <Graphics Name="FRAME5" GraphicsText="" FrameTitleOffset="14" Height="108" VerticalMargin="14" GraphicsFontColor="" GraphicsFontSpacing="Ultradense" Width="251" GraphicsFontSize="0" GraphicsFontWeight="Ultralight" StartPromptOffset="7" FillPattern="none" GraphicsFontColorCode="0" HorizontalObjectOffset="0" EdgeBackColor="white" FrameTitle="Departments" ShowScrollbar="true" RecordsDisplayCount="5" LayoutStyle="Tabular" DirtyInfo="true" XPosition="7" Bevel="Inset" GraphicsFontStyle="0" ScrollbarWidth="14" HorizontalMargin="7" FrameTitleSpacing="7" EdgePattern="solid" YPosition="15" GraphicsType="Frame" GraphicsFontName="" LayoutDataBlockName="DEPT"/>
      </Canvas>
      <ProgramUnit Name="ASK_FROM_USER" ProgramUnitType="Function" ProgramUnitText="FUNCTION ask_from_user RETURN BOOLEAN IS&amp;#10; v_button number;&amp;#10;BEGIN&amp;#10;  v_button := SHOW_ALERT('ALERT6');&amp;#10;  &amp;#10;  if v_button = ALERT_BUTTON2 THEN&amp;#10;       RETURN false;&amp;#10;  ELSE&amp;#10;       RETURN TRUE;&amp;#10;  END IF;&amp;#10;END;"/>
      <Trigger Name="POST-DATABASE-COMMIT" TriggerText="/*&amp;#10;   Created by ABC de Silva&amp;#10;   &lt;&lt;&lt;&lt;&lt;..>> &amp;#10;   testing for special characters &lt; rock &amp; roll &amp;#10;*/&amp;#10;BEGIN&amp;#10;     MESSAGE('*** Records successfully &lt;&lt;&lt;> commmited to the DB. ***');&amp;#10;     PAUSE;&amp;#10;END;" DirtyInfo="true"/>
      <Window Name="WINDOW1" Height="324" Width="540"/>
   </FormModule>
</Module>
Now, we want to read this file with UTL_FILE (in a PL/SQL stored procedure) and fill in the chart above like this:
FORM_NAME                  ITEM_NAME   ITEM_TYPE  PROPERTY         PROPERTY_VALUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
----------------------------------------------------------------------------------------------------------
D_e_p_a_r_t_m_e_n_t_s.fmb  ALERT6      Alert      Title            Saving........................... <>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
D_e_p_a_r_t_m_e_n_t_s.fmb  DEPTNO      Text Item  Prompt           Dname                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
D_e_p_a_r_t_m_e_n_t_s.fmb  DEPTNO      Text Item  MaximumLength    3                                                                                                                                                                                                                                                                                                                                     
It's, I went through Google, nobody can give a complete solution. All are partial solutions.

Any help will greatly be apprectiated.

Published by: Channa on 30 Sep 2011 06:31

Here goes:

select x1.item_name
     , x1.item_type
     , x2.property
     -- to convert back entities such as 
 to their character values :
     , utl_i18n.unescape_reference(x2.property_value) as property_value
     -- parent information :
     , x1.parent_item_name
     , x1.parent_item_type
from xmltable(
       xmlnamespaces(default 'http://xmlns.oracle.com/Forms', 'http://xmlns.oracle.com/Forms' as "def")
     , 'for $i in /Module/descendant::*[@def:Name]
        return element item {
          attribute item_name {data($i/@def:Name)}
        , attribute item_type {local-name($i)}
        , attribute parent_item_name {data($i/parent::*/@def:Name)}
        , attribute parent_item_type {local-name($i/parent::*)}
        , $i
        }'
       passing xmltype(bfilename('TEST_DIR','module2.xml'), nls_charset_id('AL32UTF8'))
       columns item_name         varchar2(50) path '@item_name'
             , item_type         varchar2(50) path '@item_type'
             , parent_item_name  varchar2(50) path '@parent_item_name'
             , parent_item_type  varchar2(50) path '@parent_item_type'
             , item              xmltype      path '.'
     ) x1
   , xmltable(
       xmlnamespaces(default 'http://xmlns.oracle.com/Forms', 'http://xmlns.oracle.com/Forms' as "def")
     , 'for $i in /item/*/attribute::def:*
        let $propname := local-name($i)
        where $propname != "Name"
        return element p {
          element name {$propname}
        , element value {data($i)}
        }'
       passing x1.item
       columns property       varchar2(50)  path 'name'
             , property_value varchar2(500) path 'value'
    ) x2
;

To make it easier, instead of calculating an ID, the information of the parent are given as (parent_name, parent_type).

Tags: Oracle Development

Similar Questions

  • Impossible to update LR CC ~ my one day to change and nothing work updated my Mac and all LR will do is CRASH!  Need help.  Tried to stop CC and remove the 1.0 file already and who does not work for me.  What can I do?

    Impossible to update LR CC ~ my one day to change and nothing work updated my Mac and all LR will do is CRASH!  Need help.  Tried to stop CC and remove the 1.0 file already and who does not work for me.  What can I do?

    If lr crashes repeatedly, reset preferences.   http://www.lightroomforums.NET/showthread.php?14226-resetting-%28or-trashing-%29-the-light file-Preferences-room

  • I need help to remove Adobe Acrobat. I got the free trial version, and it has expired. I thought I deleted the program, but I get this message "before you proceed you must first launch Adobe Acrobat and accept the end user license agreement."

    I need help to remove Adobe Acrobat. I got the free trial version, and it has expired. I thought I deleted the program, but I get this message "before you proceed you must first launch Adobe Acrobat and accept the end user license agreement." I thought I deleted the program, so I can't seem to be able to throw. I have a MacBook Pro OS x help, please.

    This message comes from Adobe Reader; Launch the Reader application and accept the EULA.

  • Need help with this gallery of xml!

    I have build a gallery but its very simple... There are pictures of the xml file.

    I have attached all the zip files.

    I just want two things if anyone can help.

    first of all when I press the next button, he's going to the next image, but without effect. It just displays the following image... I want to incorporate the effect of dragging when the image is changed to another.

    and secondly, I want to use the AutoPlay feature.

    Once swf starts images came one by one with a vertical drop of a few seconds.

    Thanks in advance... I really need help with this..!

    For the look of sliding effect using the actionscript class Tween.  Allows you to create motion tweens using the code.  The example below will be tween property _x of the instance named anObject from 0 to 300 in 3 seconds...

    import classes before using

    Import mx.transitions.Tween;
    Import mx.transitions.easing.Regular;

    TW var = new Tween (anObject, "_x", Regular.easeIn, 0, 300, 3, true);

    To implement an enforcement function auto you need to import all the images first, in the order, then you will need to use form any controlled timer, such as setInterval (with clearInterval not to need) in order to have things turn on automatically by some part-time

  • I need help, I forgot my security answers and Email not send to my Email of relief.

    I need help, I forgot my security answers and Email not send to my Email of relief.

    Unless it is in a spam filter, you have to ask Apple to reset your security questions. To do this, click here and choose a method; If this page does not list one for your country or if you are unable to call, complete and submit this form.

    (137175)

  • Need help to install Photoshop Extended CS5 and Photoshop Lightroom 3 on my macbook. No hard drive! I have serial numbers. I paid $1200 for it

    Need help to install Photoshop Extended CS5 and Photoshop Lightroom 3 on my macbook. No hard drive! I have serial numbers. I paid $1200 for it

    Download the competent installers of Adobe

    Download Adobe Creative Suite 5 products

    Adobe - Lightroom: For Macintosh: Adobe Photoshop Lightroom 3.6

    Install, then enter your serial numbers.

  • Need help. My tool Panel disappeared and I need to get it back

    Need help. My tool Panel disappeared and I need it back.

    Window > tools

  • I need help. I updated Adobe cc and now my photoshop does not work. Here is the error message:

    ' I need help. I updated Adobe cc and now my photoshop does not work. Here is the error message:


    Problem event name: APPCRASH

    Application name: Photoshop.exe

    Application version: 16.0.0.88

    Application timestamp: 55681d 39

    The default module name: StackHash_76b2

    The default module version: 0.0.0.0

    The default module timestamp: 00000000

    Exception code: c0000005

    Exception offset: 0000000000000006

    The system version: 6.1.7601.2.1.0.768.3

    Locale identifier: 3084

    Information extra No. 1: 76 b 2

    Information extra No. 2: 76b2e5a7b24373bbe6f47563f13e47b1

    Information extra No. 3: 51ff

    Information extra No. 4: 51ff68a42cf4d2164e10e22e1f794f34


    Hi Oscar,.

    Please see the thread below:

    Photoshop CC 2015 crashing?

    You can also check: 2015 release of Photoshop CC: FAQ

    Kind regards

    Sheena

  • Is there a default value for the color management in PSE10? Beautiful photos from iPhoto, but blur with elements. I need help with this before as I consider that the upgrade to PSE13 and beyond.

    Is there a default value for the color management in PSE10? Beautiful photos from iPhoto, but blur with elements. I need help with this before as I consider that the upgrade to PSE13 and beyond.

    Printing which forms an angle seems ok, but one that is horizontally seems faded, incomplete.

    I was wondering if I saved a layer somewhere and set it as a default value.

    If you group the layers, you will be left with a single layer, thus spreading your concern.

    Suggest that you do the following:

    1. Make sure you have the latest drivers for your printers
    2. Reset the default preferences.

    Hold the Alt, Ctrl + Shift keys when you click the icon to open the items. When asked if you want to delete the settings file, say Yes.

    Items nearby and let regenerate the file.

  • I have a problem to download a Web of Muse - the following site seems to be the problem - unable to validate the specified domain is associated with the FTP server and folder. Continue nevertheless helps Adobe told me to download and extract the f

    I have a problem to download a Web of Muse - the following site seems to be the problem - unable to validate the specified domain is associated with the FTP server and folder. Still

    In Adobe help, it tells me to download and extract the ftppefs.xml file - it's supposed to be found in the Mac/Library/Preferences/Adobe/Adobe Muse CC/20141 and paste this folder GO.

    I checked this place and there is no file. I have re-installed Muse but preference file doesn't show up - where I can get it?

    Daryl

    Please check the used domain in the domain and the server is entered, it can be the reason for the absence of the field.

    Thank you

    Sanjit

  • Need to install KB947821 update but fails and displays the error 9370001 code

    You will need to install KB947821 update but fails and displays the error code 9370001.  Does anyone have a solution?

    CrystalBall © SEZ...

    Free unlimited installation and compatibility support is available for Windows Vista, but only for Service Pack 2 (SP2). This support, initially planned to end on November 26, 2009, has been extended until February 26, 2010. Availability of support chat or messaging differs depending on your location. Some questions may require that more support for which he is advanced a charge.  Go to http://support.microsoft.com/oas/default.aspx?prid=13014&gprid=582034 & select appropriate category (i.e., download problem;) Installation problem; Problems after installing a service pack).

    ~ Robear Dyer (PA Bear) ~ MS MVP (that is to say, mail, security, Windows & Update Services) since 2002 ~ WARNING: MS MVPs represent or work for Microsoft

  • I need something to smooth out grainy photos and set the color.  I have several photos that I need to use which has a blue cast on them.  Photoshop will remove the color blue?  I need an answer immediately.

    I need something to smooth out grainy photos and set the color.  I have several photos that I need to use which has a blue cast on them.  Photoshop will remove the color blue?  I need an answer immediately.

    Yes, photoshop can remove noise and remove color casts

  • I bought 13 items and seeks the elements + download. exe?

    I bought 13 items and seeks the elements + download. exe?

    Available downloadable Setup files:

    Download and installation help links Adobe

    Help download and installation to Prodesigntools links can be found on the most linked pages.  They are essential; especially steps 1, 2 and 3.  If you click on a link that does not have these listed steps, open a second window by using the link to Lightroom 3 to see these "important Instructions".

  • How to connect to an Adobe Javascript(Folder Level Script) SAP Web Service and retrieve the response in a table of the Adobe Javascript/AcroJS. Could you please it explain with an example. I have two required input parameters that must be filled.

    How to connect to an Adobe Javascript(Folder Level Script) SAP Web Service and retrieve the response in a table of the Adobe Javascript/AcroJS. Could you please it explain with an example. I have two required input parameters that must be filled.

    I s generic SOAP example/tutorial on my blog: get a serial number in a form using SOAP - KHKonsulting LLC

    The web service uses only a single parameter, but you should be able to adapt the code to two arguments without problems.

  • Need help to read the xml file and place it in a table.

    Nice day!

    Here is the configuration. I have a xml file from another source which will call a stored procedure in my database (which I am supposed to create). This is a first for me, I've never done development pl/sql or worked with xml. :(

    That's what I hoped to accomplish, if there is a better way, that I am open to him.
    In short, to have a stored procedure that takes the xml file (transmitted by third parties via the call, no url must be a file), creates a temporary table and populates the two columns needed. Then, the SP will make a select join with the temporary table and other data available in another schema. Once the completed table selection will be truncated and dropped. SP farm.

    Details:
    DB: Oracle 11.2.0.1 RAC.
    Charset: AL32UTF8
    Example of XML: (nearly 10,000 lines like this in production)
    "< MerchantID report =" "#" name = 'Conversion detail report' ReportStartDate = '2011-09-27 12:00:00GMT' ReportEndDate = '2011-09-27 21:38:13GMT"Version ="1.1"> < Conversion = '1234567891234567 D' MerchantReferenceNumber Convertingdate =" 2011-09-27 13:39:02 "RequestID ="1234567891234567891234"> < OriginalDecision > REVIEW < / OriginalDecision > < NewDecision > ACCEPT < / NewDecision > < Reviewer > testusr < / examiner > < ReviewerComments > no reason to reject. < / ReviewerComments > < Notes > < Note Date = "2011-09-27 13:39:02" AddedBy = "testusr" comment = "Took possession" / > < / Notes > < queue > Digital Review < / queue > < profile > Digital orders QA < / profile > < / Conversion > "
    ...
    < / report >

    What I tried.
    I found a tutorial: http://it.toolbox.com/blogs/oracle-guide/oracle-and-xml-in-action-a-real-world-example-5319 I tried and was able to make it work. But I could not duplicate the results with my xml file. So I looked away and have had no success. :( I'm not a developer, so I'm really bad...

    I found a note of support: (how to load an XML file into a Database Table using DBMS_XMLSave unaided Bfile [227476.1 ID]) and couldn't make it work.

    I found some online then Odie son xml and tried these but slipped and couldn't get my versions of these great answers to work for me.

    Then... I'm here now and hoping that someone could walk me through this.


    I tinkered this SP (it doesn't have to be that way, the suggestions are greatly appreciated)

    create or replace procedure xml_to_table (call_1 call_2) as

    Start
    run immediately "CREATE GLOBAL TEMPORARY TABLE XMLType IMRPT
    --(clé primaire contrainte-imrpt_pk (MerchantReferenceNumber))
    XmlType store as xml binary basicfile
    -(high compression)
    virtual columns
    (MerchantReferenceNumber as (xmlcast (xmlquery ('/ Conversion/MerchantReferenceNumber ' from object_value content back) as VARCHAR2 (32))))
    , NewDecision as (xmlcast (xmlquery ('/ Conversion/NewDecision ' from object_value content back) as VARCHAR2 (10)))
    )
    -ON COMMIT PRESERVE ROWS

    run immediately 'save xml as a file on the local system?'

    insert into IMRPT (MerchantReferenceNumber, NewDecision)

    run immediately "join select statement.
    run immediately 'truncate table IMRPT.
    run immediately "drop table IMRTP.

    end;
    /

    On my last test, I tried to select just in the xml file using this:

    DECLARE
    indomdoc DBMS_XMLDOM. DOMDocument;
    innode DBMS_XMLDOM. DOMNode;
    myParser DBMS_XMLPARSER.parser;
    buf VARCHAR2 (2000);
    BEGIN
    myParser: = DBMS_XMLPARSER.newParser;

    DBMS_XMLPARSER.setBaseDir (myparser, 'XML_DIR');
    DBMS_XMLPARSER. Parse (myParser, "test.xml");

    indomdoc: = DBMS_XMLPARSER.getDocument (myParser);

    -just to test content
    innode: = DBMS_XMLDOM.makeNode (indomdoc);
    DBMS_XMLDOM.writeToBuffer (innode, buf);
    Dbms_output.put_line (BUF);

    dbms_xmldom.freeDocument (indomdoc);
    dbms_xmlparser.freeParser (myParser);
    END;
    /

    It was another accident and burn.

    Any help would be appreciated.

    Thank you

    Like I said:

    Here is an example using a REF CURSOR variable ( you will need to declare a plus for your actual procedure )

    Your procedure has two parameters, you must declare two variables to hold the two REF CURSOR ;)

    DECLARE
    
      v_filename      VARCHAR2(50) := 'DMReport.xml';
      v_rc1            SYS_REFCURSOR;
      v_rc2            SYS_REFCURSOR;
    
      v_order_name       VARCHAR2(100);
      v_reason_text      VARCHAR2(100);
    
    BEGIN
    
      xml2table(v_filename, v_rc1, v_rc2);
    
      commit;
    
      loop
        fetch v_rc1 into v_order_name;
        exit when v_rc1%notfound;
        dbms_output.put_line('ORDER_NAME='||v_order_name);
      end loop;
    
      close v_rc1;
    
      loop
        fetch v_rc2 into v_order_name, v_reason_text;
        exit when v_rc2%notfound;
        dbms_output.put_line('ORDER_NAME='||v_order_name||', REASON_TEXT='||v_reason_text);
      end loop;
    
      close v_rc2;
    
    END;
    /
    

    If you test this in SQL * Plus, do not forget to SET SERVEROUTPUT ON to see the result.

Maybe you are looking for