How to update XML source in ALDSP 3.0?

1. ALDSP 2.5 provides a updateovrride class at server side for programmer to write custom update logic for Non-XA data source.
how does ALDSP 3.0 do update with XML data source???
2. I wrote a simple trigger service for ALDSP 2.5. It processes the datagraph, that is sent to the performUpdate() method of UpdateOverride class at server side, and analyses the update type and update location in the data object. According to this information, the trigger service loads some predefined triggers and performs the action part of these loaded triggers. All this happens at server side and in the performUpdate() methode.
Now it seems that there is no UpdateOverride class in ALDSP 3.0, how can i call my trigger service at server side? :-(

In ALDSP 2.5 (and ALDSP 3.0), non-XA data sources can be updated without writing an update-override. But if you want to do any special processing that is not handled by the default behaviour, or for data services not based on relational databases, in ALDSP 2.5, you can write an update-override.
In ALDSP 3.0, the update model is somewhat different, I suggest that you peruse the ALDSP 3.0 documentation for a thorough discussion. The documentation is here http://edocs.bea.com/aldsp/docs30/index.html I suggest start with a search on 'update'.
In ALDSP 3.0, I believe updateoverride feature still exists for the purpose of backwards compatibility (at least it turned up in a search of updateoverride in the 3.0 docs)

Similar Messages

  • Problem with update XML source in ALDSP 2.5 !!!

    hi,
    i am trying to write update logic for XML source in overrideclass of ALDSP 2.5. But the updated data in XML at server side can not be reflected in client side: the XML file is updated at server side, but the queried data by client side is still old. If i use workshop at server to query, then the result is correct. How can this be resolved??
    thanks !!!
    wanxg

    Please include all the code involved - your client, your DSP Project an your UOV.I meant to zip up the code and post it. Not just mention it.
    Go here and read section 1.1 for differences between the Test View and a client. When you execute from a client, the EAR is used as the source of everything in your DSP Project. So if you have an xml file within your DSP Project, you are actually reading an xml file within the EAR. If your UOV writes to a file on disk, then that file on disk will be updated. And the next read will read the file in the EAR (which will be unchanged).
    So for your XML file, it would have to be outside your DSP project - and specified with an absolute url (file://d:|/myfiles/...) (I'm not sure if that is even allowed).
    If you search around on your disk, starting from <domain> directory, you might find the xml file that you have 'updated' - not that it will help - it will just explain your 'mystery' a little bit.

  • HOw to update XML file residing in DAM by component JSP in run-time?

    i have made a component which reads xml file residing in DAM.
    Content Author can fill some values in dialog of this component, as soon as author provide the values,i have to update these values in XML file and component reloadsby reading the updated xml file.
    i am trying to achieve this by making object of XML file and giving it's path., but i ma unable to access the XML file.
    Can anyone help me out to how to update XML file by component JSP in run-time?

    Now the changed data must be exported back into the XML file, meaning that the content of certain elements must be updated. How can this be done with XSLT?
    XSLT approach:  check these online tutorial
    http://www.xml.com/pub/a/2000/08/02/xslt/index.html
    http://www.xml.com/pub/a/2000/06/07/transforming/index.html
    ABAP approach:
    for example you have the xml (original) in a string called say xml_out .
    data: l_xml  type ref to cl_xml_document ,
            node type ref to if_ixml_node  .
    create object l_xml.
    call method l_xml->parse_string
      exporting
        stream = xml_out.
    node = l_xml->find_node(
        name   = 'IDENTITY'
       ROOT   = ROOT
    l_xml->set_attribute(
        name    = 'Name'
        value   = 'Charles'
        node    = node
    (the above example reads the element IDENTITY and sets attribute name/value to the same)
    like wise you can add new elements starting from IDENTITY using various methods available in class CL_XML_DOCUMENT
    so how do I access the XML file in order to update it?
    you have already read this XML into a ABAP variable right?
    Sorry couldnt understand your whole process, why do you need to read local XML file?
    Raja

  • How to update XML Facts in rule author

    Hi,
    since there is not a separate forum for the rules engine and this is tightly related to BPEL, so I thought I'd post the question here.
    what's the process to update XML Facts in the rule author and the BPEL process that is already using the rule repository for decisions?
    for example, if I change the data type on one of the elements in the XML Facts schema from string to int, what do I do next to put such change into the existing rule repository and update the BPEL side of things?
    I have tried re-importing the updated XSD into the rule repository (it's a WebDAV repository), I can see the change in the new definitions for the xsd, and I can also make use of the change to define new rules, in the words, the rule author side seems fine;
    then I copied the updated xsd into my BPEL project that calls the rules engine, and then what should I do next? I can't see any where in jDeveloper I can "update" the decision service partner link, so I just re-deployed the BPEL process with the updated xsd under the rule/xsd folder, but then the same call to the decision service starts failing with a "business exception, cx-fault-actor" but without any more details.
    I haven't added any new rules, only change of data type on one element.
    what am I missing?
    thanks.

    In ALDSP 2.5 (and ALDSP 3.0), non-XA data sources can be updated without writing an update-override. But if you want to do any special processing that is not handled by the default behaviour, or for data services not based on relational databases, in ALDSP 2.5, you can write an update-override.
    In ALDSP 3.0, the update model is somewhat different, I suggest that you peruse the ALDSP 3.0 documentation for a thorough discussion. The documentation is here http://edocs.bea.com/aldsp/docs30/index.html I suggest start with a search on 'update'.
    In ALDSP 3.0, I believe updateoverride feature still exists for the purpose of backwards compatibility (at least it turned up in a search of updateoverride in the 3.0 docs)

  • How to update XML file through UCCX script ?

    Hi,
    I have an UCCX script with MENU step. One of the step is for technical support team. When caller chose this step, information about date and time of the call and calling number should be recorded on a XML file located on the web server.
    This XML is uploaded into the web server , but I don't know how to update it through UCCX script.
    Here is how the XML file looks like:
    <?xml version="1.0" ?>
    <rss version="2.0">
    <channel>
    <title>CALL LOG</title>
    <link></link>
    <description>Support Call log</description>
    <ttl>1</ttl>
    <item>
    <title>2011-08-24 14:56:39 - 00044 123 123 123</title>
    <link></link>
    <description></description>
    </item
    </channel>
    </rss>
    Any idea?
    Thanks,
    O

    Hi
    The 'keyword transform' step uses the template XML file to generate the actual XML file you want to post... the template would be a plain text file uploaded to the repository, and would look like so:
    <?xml version="1.0" ?>
    CALL LOG
    Support Call log
    1
    %%calldatetime%% - %%clinumber%%
    Now - if you had that bit of XML, with correct time/number in it - have you verified know that you can definately just post that XML to a certain URL to get it on the server? Check with whoever manages that server exactly what you need to do to get it to appear - then worry about how you do that from UCCX. It may not be a matter of posting up that XML, you may need it in a different format or something..
    Aaron

  • How to update xml nodes?

    Hi friends,
                 i have a xml with 100 contacts , every contact has child nodes.....i want to update a perticular contact based on the id , how to update or a replace a new contact with matched contact based on contact id ,please help me out......
    thanks
    -Balu

    Hi
    The 'keyword transform' step uses the template XML file to generate the actual XML file you want to post... the template would be a plain text file uploaded to the repository, and would look like so:
    <?xml version="1.0" ?>
    CALL LOG
    Support Call log
    1
    %%calldatetime%% - %%clinumber%%
    Now - if you had that bit of XML, with correct time/number in it - have you verified know that you can definately just post that XML to a certain URL to get it on the server? Check with whoever manages that server exactly what you need to do to get it to appear - then worry about how you do that from UCCX. It may not be a matter of posting up that XML, you may need it in a different format or something..
    Aaron

  • How to update XML file from the program

    i am new in abap , and i have the following issue,so plz anyone who knows how to do it
    Background :
    An XML file is used as the datasource for a Flex Application. From time to time this requires updating with new staff details.
    i have already saved the xml file in the c drive with the name C:\AdvAC\AC1\bin-debug\assets\staff
    Requirement :  Write a Dialog transaction with the following text input fields.
    Reference Indicator.     (Char10)
    Staff No          (NUMC, Length 5)
    Name               (Char50)
    Room               (Numc, length 3)
    Phone               (Numc Length 7)
    Mail               (char30)
    in screen 100
    The transaction should also have an u201CUpdate Fileu201D button, which when pressed :
    1) Loads the file C:\AdvAC\AC1\bin-debug\assets \ into an ITAB.
    2) Inserts the data into the ITAB using the following XML format.
    <staff>
    <ref_ind> Reference Indicator.</ref_ind>
    <staff_no> Staff No </staff_no>
    <name> Name </name>
    <room> Room </room>
    <phone> Phone </phone>
    <mail> Mail </mail>
    </staff>
    all should be inside  <allstaff> </allstaff> tagsu2026.
    Writes the ITAB back to the file.
    thanx all

    this is what i have done but i dont know how to do the rest. i will apprecite any help from u.
    Edited by: man700s on Feb 16, 2010 6:58 AM
    REPORT  Z_XML_FILE_UPDATE.
    TYPES: BEGIN OF ts_staff,
             REF_IND(10)  TYPE c,
             Staff_No(5)  TYPE c,
             Name(50)     TYPE c,
             Room(3)      Type n,
             Phone(7)     Type n,
             Mail(30)     Type c,
           END OF ts_staff.
    DATA: t_staff TYPE TABLE OF ts_staff WITH HEADER LINE.
    DATA: w_staff Type ts_staff.
    DATA T_STRING TYPE TABLE OF STRING.
    DATA W_STRING TYPE STRING.
    call SCREEN 100.
    PERFORM upload_xml_file.
    PERFORM update_xml_tab.
    *PERFORM download_xml_file.
    MODULE USER_COMMAND_0100 INPUT.
    W_STRING = '<allstaff>'.
      APPEND w_string to t_string.
      loop at t_staff into w_staff.
      w_string ='<staff>'.
      APPEND w_string to t_string.
      if T_staff-Ref_Ind = 'X'.
      CONCATENATE '<Ref_Ind>' w_staff-Ref_Ind '</Ref_Ind>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
      if T_staff-staff_no = 'X'.
      CONCATENATE '<staff_no>' w_staff-staff_no '</staff_no>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
      if T_staff-name = 'X'.
      CONCATENATE '<name>' w_staff-name '</name>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
    if T_staff-room = 'X'.
      CONCATENATE '<room>' w_staff-room '</room>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
      if T_staff-phone = 'X'.
      CONCATENATE '<phone>' w_staff-phone '</phone>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
      if T_staff-mail = 'X'.
      CONCATENATE '<mail>' w_staff-mail '</mail>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
      w_string = '</staff>'.
      append w_string to t_string.
    ENDLOOP.
      W_STRING = '</allstaff>'.
      APPEND w_string to t_string.
    ENDMODULE.               
    Edited by: man700s on Feb 16, 2010 7:01 AM

  • How to update XML file using XSLT

    Hi there,
    I have a "small" issue with exporting data to an XML file using XSLT.
    A two steps process is needed to import data from a non-hierarchical XML file into ABAP, change the data, and then update the XML file with new values. The problem is not trivial, since the format of the XML file is a complex one: there are many interdependent elements on the same level, pointing to each other by using id and ref attributes. Based on these values the data can be read and written into an internal table. I use XSLT and XPath for that. So the inbound process is done and seems to work correctly. I have to mention that the file contains much more data than I need. I am working only with a small part of it.
    Now the changed data must be exported back into the XML file, meaning that the content of certain elements must be updated. How can this be done with XSLT? I can pass only the internal table to the transformation, so how do I access the XML file in order to update it? I have tried to use the <B>xsl:document()</B> function to access the content of the file store locally on my PC, but it fails each time by throwing and URI exception. I have tried the absolute path without any addition and the path with the file:/// addition. Same result. Please advise.
    Many thanks,
    Ferenc
    P.S. Please provide me with links only if they are relevant for this very matter. I will not give points for irrelevant postings...

    Now the changed data must be exported back into the XML file, meaning that the content of certain elements must be updated. How can this be done with XSLT?
    XSLT approach:  check these online tutorial
    http://www.xml.com/pub/a/2000/08/02/xslt/index.html
    http://www.xml.com/pub/a/2000/06/07/transforming/index.html
    ABAP approach:
    for example you have the xml (original) in a string called say xml_out .
    data: l_xml  type ref to cl_xml_document ,
            node type ref to if_ixml_node  .
    create object l_xml.
    call method l_xml->parse_string
      exporting
        stream = xml_out.
    node = l_xml->find_node(
        name   = 'IDENTITY'
       ROOT   = ROOT
    l_xml->set_attribute(
        name    = 'Name'
        value   = 'Charles'
        node    = node
    (the above example reads the element IDENTITY and sets attribute name/value to the same)
    like wise you can add new elements starting from IDENTITY using various methods available in class CL_XML_DOCUMENT
    so how do I access the XML file in order to update it?
    you have already read this XML into a ABAP variable right?
    Sorry couldnt understand your whole process, why do you need to read local XML file?
    Raja

  • How to update xml content based on resource_view path?

    I am using resource db to store xml documents. I can ftp xml documents into a specific path within resource db. I have a xml schema registered and setup with a xml table. I would like to update a xml document based on a specific resource_view path.
    For example:
    /some/path/mydocument.xml
    I would like to upddate this document using the path "/some/path/mydocument.xml"
    How can this be done using SQL?

    Typically the best way is if you know the name of the default table that contains your document. You do the update on the default table as follows
    update yourTable  t
         set object_value = updateXML(...)
    where ref(t) = (
                     select extractValue(res,'/Resource/XMLRef')
                       from resource_view
                      where equals_path(res,'/some/path/mydocument.xml') = 1
                          )

  • How to update xml from portal

    Can i update weblogic.xml from portal(programmatically). i am using WL
    platform 8.1 sp2.
    Now i am manually adding each principal name.
    For ex:
    <principal-name>mark</principal-name>
    Can i achieve this programmatically from portal.
    Any solution
    TIA
    Mahesh

    this is what i have done but i dont know how to do the rest. i will apprecite any help from u.
    Edited by: man700s on Feb 16, 2010 6:58 AM
    REPORT  Z_XML_FILE_UPDATE.
    TYPES: BEGIN OF ts_staff,
             REF_IND(10)  TYPE c,
             Staff_No(5)  TYPE c,
             Name(50)     TYPE c,
             Room(3)      Type n,
             Phone(7)     Type n,
             Mail(30)     Type c,
           END OF ts_staff.
    DATA: t_staff TYPE TABLE OF ts_staff WITH HEADER LINE.
    DATA: w_staff Type ts_staff.
    DATA T_STRING TYPE TABLE OF STRING.
    DATA W_STRING TYPE STRING.
    call SCREEN 100.
    PERFORM upload_xml_file.
    PERFORM update_xml_tab.
    *PERFORM download_xml_file.
    MODULE USER_COMMAND_0100 INPUT.
    W_STRING = '<allstaff>'.
      APPEND w_string to t_string.
      loop at t_staff into w_staff.
      w_string ='<staff>'.
      APPEND w_string to t_string.
      if T_staff-Ref_Ind = 'X'.
      CONCATENATE '<Ref_Ind>' w_staff-Ref_Ind '</Ref_Ind>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
      if T_staff-staff_no = 'X'.
      CONCATENATE '<staff_no>' w_staff-staff_no '</staff_no>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
      if T_staff-name = 'X'.
      CONCATENATE '<name>' w_staff-name '</name>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
    if T_staff-room = 'X'.
      CONCATENATE '<room>' w_staff-room '</room>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
      if T_staff-phone = 'X'.
      CONCATENATE '<phone>' w_staff-phone '</phone>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
      if T_staff-mail = 'X'.
      CONCATENATE '<mail>' w_staff-mail '</mail>' into w_string.
      APPEND w_string to t_string.
      ENDIF.
      w_string = '</staff>'.
      append w_string to t_string.
    ENDLOOP.
      W_STRING = '</allstaff>'.
      APPEND w_string to t_string.
    ENDMODULE.               
    Edited by: man700s on Feb 16, 2010 7:01 AM

  • How to update xml attributes as multiple rows

    I am new to this technology, but i need to show the result
    in xml document i have to update these attributes get from Databse utility class.
    <equipment object="" manufacturer="" part_number="" type="" model="" items="" accessories="">
    <equipment object="" manufacturer="" part_number="" type="" model="" items="" accessories="">By using XSLT Doucment i have to show this in table format multiple rows of data.
    I'll be happy if anyone tell me the example.

    Now the changed data must be exported back into the XML file, meaning that the content of certain elements must be updated. How can this be done with XSLT?
    XSLT approach:  check these online tutorial
    http://www.xml.com/pub/a/2000/08/02/xslt/index.html
    http://www.xml.com/pub/a/2000/06/07/transforming/index.html
    ABAP approach:
    for example you have the xml (original) in a string called say xml_out .
    data: l_xml  type ref to cl_xml_document ,
            node type ref to if_ixml_node  .
    create object l_xml.
    call method l_xml->parse_string
      exporting
        stream = xml_out.
    node = l_xml->find_node(
        name   = 'IDENTITY'
       ROOT   = ROOT
    l_xml->set_attribute(
        name    = 'Name'
        value   = 'Charles'
        node    = node
    (the above example reads the element IDENTITY and sets attribute name/value to the same)
    like wise you can add new elements starting from IDENTITY using various methods available in class CL_XML_DOCUMENT
    so how do I access the XML file in order to update it?
    you have already read this XML into a ABAP variable right?
    Sorry couldnt understand your whole process, why do you need to read local XML file?
    Raja

  • How to update xml file

    hai ....this is anitha.
    iam having some problem regarding the updation of the xml file. i can update the Node Values, its Attributes, its Childnodes etc.. successfully, but only once. first time it is working fine. but when again iam trying to update other nodes, the previously updated values r lost.. iam sending the code also.
    pls give the reply asp.
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NamedNodeMap;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.DOMException;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.FileInputStream;
    import javax.servlet.http.*;
    import java.util.ArrayList;
    import java.util.Iterator;
    //import javax.servlet.http.HttpSession;
    public class empXml
         String xmlFilePath="";
         File xmlFile=null;
         FileWriter fout=null;
         Element emp;
         Element empName;
         Element empDesig;
         Element empDiv;
         //Element newNode;
    public void createXml(ArrayList arr)throws IOException, DOMException
         try
              for(Iterator itr=arr.iterator();itr.hasNext();)
              System.out.println(itr.next());
              //System.out.println((String)(itr.next()));
              xmlFile=new File("D:\\Tomcat 4.0\\webapps\\news\\jsp\\employee.xml");
              System.out.println(" Employees Information ");
                        fout = new FileWriter(xmlFile);     
                        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                        DocumentBuilder docBuilder = dbf.newDocumentBuilder();
                        Document doc = docBuilder.getDOMImplementation().
                        createDocument("", "employee", null);
                        Element root = doc.getDocumentElement();
                        emp = doc.createElement("emp");
                        empName = doc.createElement("empname");
                             empName.appendChild(doc.createTextNode(arr.get(0).toString()));
                             emp.appendChild(empName);
                        empDesig = doc.createElement("empdesig");
                             empDesig.appendChild(doc.createTextNode(arr.get(1).toString()));
                             emp.appendChild(empDesig);
                        empDiv = doc.createElement("empdiv");
                             empDiv.appendChild(doc.createTextNode(arr.get(2).toString()));
                             emp.appendChild(empDiv);
                        root.appendChild(emp);           
              DomTreeBuilder.printDomTree(doc,fout); // Builds The Dom Tree
              System.out.println("Employees XML File is Successfully Generated");
         }catch (Exception e)
         System.err.println("Error while Generating file"+ e.getMessage());
         finally
         fout.close();
    }//end of createXml
    }//end of class createNewsXml
    class DomTreeBuilder
    public static void printDomTree(Node node,FileWriter fout) throws IOException
              int type = node.getNodeType();
              switch (type)
              // print the document element
              case Node.DOCUMENT_NODE:
                   fout.write("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
                   printDomTree(((Document)node).getDocumentElement(),fout);
                   break;
              // print element and any attributes
              case Node.ELEMENT_NODE:
                   fout.write("<");
                   fout.write(node.getNodeName());
                   if (node.hasAttributes())
                        NamedNodeMap attrs = node.getAttributes();
                        for (int i = 0; i < attrs.getLength(); i++)
                        printDomTree(attrs.item(i),fout);
                   fout.write(">");
              if (node.hasChildNodes())
                        NodeList children = node.getChildNodes();
                        for (int i = 0; i < children.getLength(); i++)
                        printDomTree(children.item(i),fout);
              break;
              // Print attribute nodes
              case Node.ATTRIBUTE_NODE:
                   fout.write(" " + node.getNodeName() + "=\"");
                   fout.write(node.getNodeValue());
                   if (node.hasChildNodes())
                        NodeList children = node.getChildNodes();
                        for (int i = 0; i < children.getLength(); i++)
                        printDomTree(children.item(i),fout);
                   fout.write("\"");
              break;
              // handle entity reference nodes
              case Node.ENTITY_REFERENCE_NODE:
                   fout.write("&");
                   fout.write(node.getNodeName());
                   fout.write(";");
                   break;
              // print cdata sections
              case Node.CDATA_SECTION_NODE:
                   fout.write("<![CDATA[");
                   fout.write(node.getNodeValue());
                   fout.write("]]>");
                   break;
              // print text
              case Node.TEXT_NODE:
                   fout.write(node.getNodeValue());
                   break;
              // print comment
              case Node.COMMENT_NODE:
                   fout.write("<!--");
                   fout.write(node.getNodeValue());
                   fout.write("-->");
                   break;
              // print processing instruction
              case Node.PROCESSING_INSTRUCTION_NODE:
                   fout.write("<?");
                   fout.write(node.getNodeName());
                   String data = node.getNodeValue();
                   fout.write(" ");
                   fout.write(data);
                   fout.write("?>");
                   break;
         } // end of Switch
         if (type == Node.ELEMENT_NODE)
                   fout.write("</");
                   fout.write(node.getNodeName());
                   fout.write('>');
    } // printDomTree(Node)
    } // End of DomBuilder Class
    waiting for the reply soon.
    thanks and regards,
    anitha

    Hi,
    There was no problem in this code. When I executed it worked well, anyway I changed slightly because to add more than one elements. I posted the entire code here:
    Regards
    Baskar
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NamedNodeMap;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.DOMException;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.StringTokenizer;
    public class empXml {
         String xmlFilePath = "";
         File xmlFile = null;
         FileWriter fout = null;
         Element emp;
         Element empName;
         Element empDesig;
         Element empDiv;
         // Element newNode;
         public static void main(String[] args) {
              try {
                   empXml x = new empXml();
                   ArrayList ar = new ArrayList();
                   ar.add("baskar,SE,Hitachi");
                   ar.add("krish,SE,Hitachi");
                   ar.add("preet,SE,Hitachi");
                   ar.add("Jan,SE,Hitachi");
                   ar.add("Sam,SE,Hitachi");
                   x.createXml(ar);
              } catch (Exception e) {
                   e.printStackTrace();
         public void createXml(ArrayList arr) throws IOException, DOMException {
              String empl[] = new String[arr.size()];
              arr.toArray(empl);
              try {
                   Iterator itr = arr.iterator();
                   xmlFile = new File("employee.xml");
                   System.out.println(" Employees Information ");
                   fout = new FileWriter(xmlFile);
                   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                   DocumentBuilder docBuilder = dbf.newDocumentBuilder();
                   Document doc = docBuilder.getDOMImplementation().createDocument("",
                             "employee", null);
                   Element root = doc.getDocumentElement();
                   for (int i = 0; i < empl.length; i++) {
                        StringTokenizer st = new StringTokenizer(empl, ",");
                        emp = doc.createElement("emp");
                        empName = doc.createElement("empname");
                        empName.appendChild(doc.createTextNode(st.nextToken()));
                        emp.appendChild(empName);
                        empDesig = doc.createElement("empdesig");
                        empDesig.appendChild(doc.createTextNode(st.nextToken()));
                        emp.appendChild(empDesig);
                        empDiv = doc.createElement("empdiv");
                        empDiv.appendChild(doc.createTextNode(st.nextToken()));
                        emp.appendChild(empDiv);
                        root.appendChild(emp);
                   DomTreeBuilder.printDomTree(doc, fout); // Builds The Dom Tree
                   System.out.println("Employees XML File is Successfully Generated");
              } catch (Exception e) {
                   e.printStackTrace();
              } finally {
                   fout.close();
         }// end of createXml
    }// end of class createNewsXml
    class DomTreeBuilder {
         public static void printDomTree(Node node, FileWriter fout)
                   throws IOException {
              int type = node.getNodeType();
              switch (type) {
              // print the document element
              case Node.DOCUMENT_NODE: {
                   fout.write("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
                   printDomTree(((Document) node).getDocumentElement(), fout);
                   break;
              // print element and any attributes
              case Node.ELEMENT_NODE: {
                   fout.write("<");
                   fout.write(node.getNodeName());
                   if (node.hasAttributes()) {
                        NamedNodeMap attrs = node.getAttributes();
                        for (int i = 0; i < attrs.getLength(); i++)
                             printDomTree(attrs.item(i), fout);
                   fout.write(">");
                   if (node.hasChildNodes()) {
                        NodeList children = node.getChildNodes();
                        for (int i = 0; i < children.getLength(); i++)
                             printDomTree(children.item(i), fout);
                   break;
              // Print attribute nodes
              case Node.ATTRIBUTE_NODE: {
                   fout.write(" " + node.getNodeName() + "=\"");
                   fout.write(node.getNodeValue());
                   if (node.hasChildNodes()) {
                        NodeList children = node.getChildNodes();
                        for (int i = 0; i < children.getLength(); i++)
                             printDomTree(children.item(i), fout);
                   fout.write("\"");
                   break;
              // handle entity reference nodes
              case Node.ENTITY_REFERENCE_NODE: {
                   fout.write("&");
                   fout.write(node.getNodeName());
                   fout.write(";");
                   break;
              // print cdata sections
              case Node.CDATA_SECTION_NODE: {
                   fout.write("<![CDATA[");
                   fout.write(node.getNodeValue());
                   fout.write("]]>");
                   break;
              // print text
              case Node.TEXT_NODE: {
                   fout.write(node.getNodeValue());
                   break;
              // print comment
              case Node.COMMENT_NODE: {
                   fout.write("<!--");
                   fout.write(node.getNodeValue());
                   fout.write("-->");
                   break;
              // print processing instruction
              case Node.PROCESSING_INSTRUCTION_NODE: {
                   fout.write("<?");
                   fout.write(node.getNodeName());
                   String data = node.getNodeValue();
                        fout.write(" ");
                        fout.write(data);
                   fout.write("?>");
                   break;
              } // end of Switch
              if (type == Node.ELEMENT_NODE) {
                   fout.write("</");
                   fout.write(node.getNodeName());
                   fout.write('>');
         } // printDomTree(Node)
    } // End of DomBuilder Class

  • Update xml string values.

    Hi,
    I'm on 11.2.0.2 and got table with nclob column which stores long xml string .
    {code}
    "<?xml version="1.0" encoding="UTF-8"?>
    <?fuego version="6.5.2" build="101272"?>
    <set>
    <configuration name="TEST Database" type="SQL" subtype="DDORACLE">
      <property name="jdbc.pool.idle_timeout" value="5"/>
      <property name="jdbc.pool.entry.max" value="10"/>
      <property name="oracle.dateEqualsTimestamp" value="false"/>
      <property name="jdbc.schema" value="user1"/>
      <property name="jdbc.host" value="hostname"/>
      <property name="user" value="user1"/>
      <property name="jdbc.port" value="1521"/>
      <property name="jdbc.pool.min" value="0"/>
      <property name="jdbc.pool.maxopencursors" value="50"/>
      <property name="oracle.sid" value="dbsid"/>
      <property name="password" value="user101"/>
      <property name="jdbc.xa" value="false"/>
      <property name="jdbc.pool.max" value="10"/>
    </configuration>
    <configuration name="TEST Database2" type="SQL" subtype="DDORACLE">
      <property name="jdbc.pool.idle_timeout" value="5"/>
      <property name="jdbc.pool.entry.max" value="10"/>
      <property name="oracle.dateEqualsTimestamp" value="false"/>
      <property name="jdbc.schema" value="user2"/>
      <property name="jdbc.host" value="hostname"/>
      <property name="user" value="user2"/>
      <property name="jdbc.port" value="1521"/>
      <property name="jdbc.pool.min" value="0"/>
      <property name="jdbc.pool.maxopencursors" value="50"/>
      <property name="oracle.sid" value="dbsid2"/>
      <property name="password" value="user201"/>
      <property name="jdbc.xa" value="false"/>
      <property name="jdbc.pool.max" value="10"/>
    </configuration>
    </set>
    {code}
    My goal is to update password value in such way that it equals to value from jdbc.schema value  <property name="jdbc.schema" value="user2"/>   so in this case user2 || '01'
    <property name="password" value="user201"/>   <-- that is my goal .
    Regards
    Greg

    Hi,
    You can find a few methods here : How To : Update XML nodes with values from the same document | Odie's Oracle Blog
    They're not all applicable to your version and settings though.
    Here's the first one applied to your case :
    declare
      v_xmldoc   xmltype;
    begin
      select xmlparse(document to_clob(t.xmldoc))
      into v_xmldoc
      from my_nclob_table t
      where t.id = 1;
      for r in (
        select idx, schema_name
        from my_nclob_table t
           , xmltable(
               '/set/configuration'
               passing v_xmldoc
               columns idx         for ordinality
                     , schema_name varchar2(30) path 'property[@name="jdbc.schema"]/@value'
      loop
        select updatexml(
                 v_xmldoc
               , '/set/configuration['||to_char(r.idx)||']/property[@name="password"]/@value'
               , r.schema_name || '01'
        into v_xmldoc
        from dual ;
      end loop;
      update my_nclob_table t
      set t.xmldoc = to_nclob(xmlserialize(document v_xmldoc indent))
      where t.id = 1;
    end;
    Here's another one, using DOM :
    declare
      doc   clob;
      p        dbms_xmlparser.Parser;
      domdoc   dbms_xmldom.DOMDocument;
      docnode  dbms_xmldom.DOMNode;
      conf_list      dbms_xmldom.DOMNodeList;
      conf_node      dbms_xmldom.DOMNode;
      password_node  dbms_xmldom.DOMNode;
      schema_name     varchar2(30);
      password_value  varchar2(256);
    begin
      select to_clob(xmldoc)
      into doc
      from my_nclob_table
      where id = 1 ;
      p := dbms_xmlparser.newParser;
      dbms_xmlparser.parseClob(p, doc);
      domdoc := dbms_xmlparser.getDocument(p);
      dbms_xmlparser.freeParser(p);
      docnode := dbms_xmldom.makeNode(domdoc);
      conf_list := dbms_xslprocessor.selectNodes(docnode, '/set/configuration');
      for i in 0 .. dbms_xmldom.getLength(conf_list) - 1 loop
        conf_node := dbms_xmldom.item(conf_list, i);
        dbms_xslprocessor.valueOf(conf_node, 'property[@name="jdbc.schema"]/@value', schema_name);
        password_node := dbms_xslprocessor.selectSingleNode(conf_node, 'property[@name="password"]/@value');
        dbms_xmldom.setNodeValue(password_node, schema_name || '01');
      end loop;
      dbms_xmldom.writeToClob(domdoc, doc);
      dbms_xmldom.freeDocument(domdoc);
      update my_nclob_table t
      set t.xmldoc = to_nclob(doc)
      where t.id = 1;
    end;
    Message was edited by: odie_63 - added DOM example

  • How to update/change the value of elements in an xml file?

    Hi Everyone,
    Could any one of u tell me how to update the value of elements in an XML file, using java? The reason is i want to use an XML file as a data source (i.e. more or less like a database), without using any RDBMS, for simple applications such as to read a record and update the record. By the way, my XML file will have only one record, such as the current weather information, with fields such as temperature, humdity etc. for 1 city only.
    Thanks in advance.

    Here is a solution how to check a particular value or element name in an xml and update the changes e to an xml.
    Sample.xml
    <URLConstructor>
    <application name="cp_outage">
    <resource>hello</resource>
    <value>val</value>
    </application>
    <application name="cp_outage">
    <resource>hello</resource>
    <value>val</value>
    </application>
    </URLConstructor>
    XMLWriter.java
    package com;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.DOMBuilder;
    import org.jdom.output.XMLOutputter;
    // used for printing
    import org.apache.xml.serialize.XMLSerializer;
    import org.jdom.output.XMLOutputter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Iterator;
    import java.util.List;
    class XMLWriter{
    public void update(File fileName)
    try {
              DOMBuilder domBuilder=new DOMBuilder();
              Document doc=domBuilder.build(fileName);
              Element element=doc.getRootElement();
              getChildren(element);
              writeToXML(doc,fileName);
              getChildren(element);
    } catch (Exception e) {
    e.printStackTrace();
         * @param doc
         private void writeToXML(Document document,File filePath)
                   XMLOutputter xmloutputter = new XMLOutputter();
                        try
                             FileOutputStream fileOutputStream = new FileOutputStream(filePath);
                             xmloutputter.output(document, fileOutputStream);
                             fileOutputStream.close();
                        catch (FileNotFoundException e)
                             e.printStackTrace();
                        catch (IOException e)
                             e.printStackTrace();
         public void getChildren(Element element)
                        if(!element.hasChildren())
                             return;
                        List childrenList = element.getChildren();
                        Iterator itr=childrenList.iterator();
                        while(itr.hasNext())
                             Element childElement=(Element) itr.next();
                             if(childElement.hasChildren())
                                       getChildren(childElement);
    //                                   System.out.println("Name "+childElement.getName());
    //                                   System.out.println("Value "+childElement.getText());
                                       if(childElement.getText().equals("hello") || (childElement.getName().equals("resource")))
                                            updateInfo(childElement,"New_Resource","AddedText");
         * @param childElement
         * @param string
         * @param string2
         private void updateInfo(Element element, String elementName, String value)
              element.setName(elementName);
              element.setText(value);          
    static public void main(String[] args)
    XMLWriter xmlWriter=new XMLWriter();
    xmlWriter.update(new File("c:/sample.xml"));
    After execution the file will be changed to
    <URLConstructor>
    <application name="cp_outage">
    <New_Resource>AddedText</New_Resource>
    <value>val</value>
    </application>
    <application name="cp_outage">
    <New_Resource>AddedText</New_Resource>
    <value>val</value>
    </application>
    </URLConstructor>
    Regards,
    Maheswar

  • How to Update existing XML File Using Java Swing

    Hi,
    I am reading XML file and getting keywords into JList. When i add some keywords into JList through textfield and remove keywords JList, then after click on save button it should update xml file. How can i do it ?
    Please provide me some code tips for updating xml file
    This is the code that i am using for reading XML File:
    import javax.swing.*;
    import java.awt.event.*;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    import java.io.IOException;
    import java.util.*;
    import java.text.Collator;
    import java.util.regex.*;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    import com.cloudgarden.layout.AnchorConstraint;
    import com.cloudgarden.layout.AnchorLayout;
    public class getKeywords extends JFrame implements ActionListener
    static JPanel p;
    static JLabel lbl;
    static JButton btnSave,btnAdd,btnRemove;
    static String path;
    static Vector v;
    static JList lstCur;
    static JTextField txtKey;
    Document dom;
    static image imgval;
    NodeList nodelstImage;
    static AnchorLayout anchorLay;
    private DefaultListModel lstCurModel;
    public getKeywords()
         super("Current Keywords");
        v=new Vector();
        p=new JPanel();
        txtKey=new JTextField(10);
        btnAdd=new JButton("Add");
        btnRemove=new JButton("Remove");
        btnSave=new JButton("Save");
        lbl=new JLabel("Current Keywords");
        lstCurModel=new DefaultListModel();
            lstCur=new JList();
            JScrollPane scr=new JScrollPane(lstCur);
        runExample();
         lstCur.setModel(lstCurModel);
         p.add(lbl);
         p.add(scr);
         p.add(txtKey);
         p.add(btnAdd);
         p.add(btnRemove);
         p.add(btnSave);
         add(p);
         btnAdd.addActionListener(this);
         btnRemove.addActionListener(this);
         btnSave.addActionListener(this);
         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    public static void main(String arg[])
         getKeywords g=new getKeywords();
         g.resize(250,400);
         g.setVisible(true);     
    public void actionPerformed(ActionEvent ae)
         if(ae.getSource()==btnAdd)
              lstCurModel.addElement(txtKey.getText());
         if(ae.getSource()==btnRemove)
              lstCurModel.remove(lstCur.getSelectedIndex());
         if(ae.getSource()==btnSave)
              //Code to Write
         public void runExample()
              //Parse the XML file and get the DOM object
              ParseXMLFile();
              //Get the Detail of the Image Document
              parseImageDocument();
              //Get the Detail of the LML Document
              //parseLMLDocument();
              //System.out.println(lmlval.Title);
         public void ParseXMLFile()
              //Get the Factory
              DocumentBuilderFactory builderFac = DocumentBuilderFactory.newInstance();
              try
                   //Using factory get an instance of the Document Builder
                   DocumentBuilder builder = builderFac.newDocumentBuilder();
                   //parse using builder to get DOM representation of the XML file
                   dom = builder.parse("LML.xml");
              catch(ParserConfigurationException pce)
                   pce.printStackTrace();
              catch(SAXException sax)
                   sax.printStackTrace();
              catch(IOException ioex)
                   ioex.printStackTrace();
         public void parseImageDocument()
              //Get the root element
              Element docImgEle = dom.getDocumentElement();
              //Get a nodelist for <Image> Element
              nodelstImage =  docImgEle.getElementsByTagName("Image");
              if(nodelstImage != null && nodelstImage.getLength() > 0)
                   for(int i = 0; i < nodelstImage.getLength(); i++)
                        //Get the LML elements
                        Element el = (Element)nodelstImage.item(i);
                        //Get the LML object
                        getImage myImgval = new getImage();
                        imgval = myImgval.getimage(el);
                        v.addElement(new String(imgval.Thumb));
                        String[] x = Pattern.compile(",").split(imgval.Keys);
                        for (int s=0; s<x.length; s++)
                        lstCurModel.addElement(x[s].trim());
                        //System.out.println(x[s].trim());
    }     Thanks
    Nitin

    You should update your DOM document to represent the changes that you want made.
    Then, using the Transformation API you simply transform your document onto a stream representing your file. Something like this:
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    // TODO - set indentation amount!
    Source source = new DOMSource(dom);
    Result result = new StreamResult(file);
    transformer.transform(source, result);Hope this helps.

Maybe you are looking for