Updating xml with jdom

I create a blank xml file when my user selects new:
and I create a list of the elements
<?xml version="1.0" encoding="UTF-8"?>
<Root>
   <START/>
   <END/>
</Root>User creates a new element, i insert the new element between start and end. It's there in the list, I confirmed that, but when I try to setContent on the root element(Root), I end with nothing in my xml file and my system print out.
My xml file should lke tis afterwards:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
   <START/>
   <element_one/>
   <END/>
</Root>
        Element root = doc.getRootElement();
        /* create a new element */
        Element element = createNewElement();// returns new element
        elements.add((elements.size()-1),element);
        System.out.println(elements);// prints out "[start] [element_one] [end]"
        root.setContent(elements);
        System.out.println("after "+root.getContent());// prints out []So why is my content coming up blank?
Thanks

Try cloning the element and adding that to the root.

Similar Messages

  • Can't update XML with optional element

    Hi,
    I'm trying to update an XML document (global XML Schema based) with an optional element (insert an optional element into an existing xml document).
    The update statement seems to work but the optional element is missing when I select the document!
    How can I update (insert) an optional element in an XML document?
    Thanx for your comments,
    Markus
    My scenario:
    ============
    XML Schema:
    <?xml version='1.0'?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xdb="http://xmlns.oracle.com/xdb">
    <xsd:element name="TestUpdate" xdb:defaultTable="TESTUPDATE">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="anElement" type="xsd:string" />
    <xsd:element name="optElement" type="xsd:string" minOccurs="0" />
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    SQL:
    begin
    dbms_xmlschema.registerSchema('xsd/TestUpdate.xsd',
    getDocument('testupdate.xsd'),
    FALSE);
    end;
    ALTER TABLE TestUpdate
    add constraint VALID_TestUpdate
    check (XMLIsValid(sys_nc_rowinfo$)=1);
    INSERT INTO TestUpdate values (xmltype(getDocument('TestUpdate.xml')))
    update TestUpdate x
    SET x = UPDATEXML(value(x),
    '/TestUpdate/optElement','<optElement> my optional Element</optElement>');
    ==> Message is: 1 row updated !!!!!!!!!!
    SQL> select * from testupdate;
    SYS_NC_ROWINFO$
    <TestUpdate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespac
    eSchemaLocation="xsd/TestUpdate.xsd">
    <anElement>more text....</anElement>
    </TestUpdate>
    ==> No UPADATE performed!!!

    Thanks Pete,
    XPath evaluation may return no data and may cause the trouble of giving an 'success' answer.
    On the other side I have rewritten the statement:
    SQL> update testupdate x set x.XMLData."optElement" = ' just some text';
    SQL> select * from testupdate;
    SYS_NC_ROWINFO$
    <TestUpdate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespac
    eSchemaLocation="xsd/TestUpdate.xsd">
    <anElement>more text....</anElement>
    </TestUpdate>
    ===> no UPDATE ???????
    SQL> select x.xmldata."optElement" from testupdate x;
    XMLDATA.optElement
    just some text
    ===> WOW, row is updated!!!!!!!!
    This result is more wired than before :-)
    (at least for myself)
    Can somebody explain the result?
    bye,
    Markus

  • Manipulating XML with JDOM (IllegalAddException)

    How can I add an element that already have an existing parent to another element that should be its new parent?
    Currently I am getting an org.jdom.IllegalAddException because adding an element that have an parent to an new created element.
    let say:
    Element rootElem = doc.getRootElement();
    Element firstChild = rootElem.getChild("servlet");
    Element myNewElem = new Element("myelem");
    myNewElem.addContent(firstChild );The code causes an org.jdom.IllegalAddException because firstChild have already an parent.
    Is there a way to solve this.
    Thanks a lot in advance:
    Nermin B.

    OK. I've found the nswer:
    Element rootElem = doc.getRootElement();
    Element firstChild = rootElem.getChild("servlet");
    firstChild.detach();
    Element myNewElem = new Element("myelem");
    myNewElem.addContent(firstChild );I have overseen detach() method.]

  • XML validation with JDOM / JAXP

    Hello,
    I am trying to validate xml file against schema file. I decided to use JDOM and JAXP.
    First question: is it a good choice?
    I did a first attempt but not sure I have understood all what I am doing :(
    First I have create a parser usinf org.jdom.*
    SAXBuilder parser = new SAXBuilderThen I built my document:
    Document doc = parser.build(myFile)These 2 steps are ok. But it does not do validation.
    I saw in the JDOM documentation that I can set a validation flag to true. I did it. First problem, I got the following error from JDOMException: Document is invalid: no grammar found.
    Is there a way to specify to the parser where to find the xsd file?
    As I did not find answer to this question by myself, I tried implementing the Schema class from JAXP:
    SAXBuilder parser = new SAXBuilder;
    Document doc = parser.build(myFile);
    Schema schema = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(schemaFile);
    ValidatorHandler vh = schema.newValidatorHandler();
    SAXOutputter so = new SAXOutputter(vh);
    so.output(doc);It does the validation against the schema file specified but I am not really sure about what I am doing here. The last 2 commands are not clear to me :(
    Then in my schema file, I have elements that have default value. I expected the following behavior: if the element is not in the xml file then the default will be used by the parser (and added in the tree). But it seems, it's not the case.
    Any help/explanation will be really appreciated.

    I am trying to validate xml file against schema file. I decided to use JDOM and JAXP.
    First question: is it a good choice?
    If only schema validation is required use the validation API in JDK 5.0.
    http://www-128.ibm.com/developerworks/xml/library/x-javaxmlvalidapi.html
    http://java.sun.com/developer/technicalArticles/xml/validationxpath/
    For validation with JDOM, the following validation application explains the procedure:import org.jdom.input.SAXBuilder;
    import org.xml.sax.SAXException;import org.jdom.*;
    import java.io.*;
    public class JDOMValidator{
    public void validateSchema(String SchemaUrl, String XmlDocumentUrl){
               try{
    SAXBuilder saxBuilder = new SAXBuilder("org.apache.xerces.parsers.SAXParser",true);<br/>saxBuilder.setValidation(true);
    saxBuilder.setFeature("http://apache.org/xml/features/validation/schema",true);
    saxBuilder.setFeature("http://apache.org/xml/features/validation/schema-full-checking",true);
    saxBuilder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",SchemaUrl);
    Validator handler=new Validator();
    saxBuilder.setErrorHandler(handler);
    saxBuilder.build(XmlDocumentUrl);
    if(handler.validationError==true)
    System.out.println("XML Document has Error:"+handler.validationError+""+
    handler.saxParseException.getMessage());      
    else           
          System.out.println("XML Document is valid");
              }catch(JDOMException jde){
                }catch(IOException ioe){
    private class Validator extends DefaultHandler{     
         public boolean  validationError = false; 
         public SAXParseException saxParseException=null;    
      public void error(SAXParseException exception) throws SAXException{        
         validationError =true;
         saxParseException=exception; 
      public void fatalError(SAXParseException exception) throws SAXException  {
    validationError = true;     
    saxParseException=exception;
      public void warning(SAXParseException exception) throws SAXException       {
    public static void main(String[] argv)   {
       String SchemaUrl=argv[0];StringXmlDocumentUrl=argv[1];
       JDOMValidator validator=new JDOMValidator();
       validator.validateSchema(SchemaUrl,XmlDocumentUrl);
    }

  • Modifying XML files with JDOM

    Hi:
    I've been trying to get up to speed with JDOM, and while it seems pretty intuitive, I've been having a problem w/ modifying XML documents.
    Namely, once I get a Document object from a (skeleton) XML file, do changes made to the Document object through, say, addContent() propagate to the original file? My gut feeling is no, although this was certainly what I had expected initially.
    Here's a code fragment of what I had tried to do to populate a barebones XML file:
                   Document doc = builder.build(output);
              // add 100 elements, all the same
              for (int count = 0; count < 100; count++)
                   Element curr = new Element("book");
                   // create child nodes for book
                   Element title = new Element("title");
                   title.addContent("Book " + (count + 1));
                   Element author = new Element("author");
                   author.addContent("Author " + (count + 1));
                   Element price = new Element("price");
                   price.addContent("Price " + (count + 1));
                   curr.addContent(title);
                   curr.addContent(author);
                   curr.addContent(price);
                   doc.getRootElement().addContent( curr );
              }

    Mikael,
    This sounds like one of the many quirks (perhaps bugs) related to how FrameMaker handles non-FM files in books. The current book model doesn't play well with XML files as chapters and this seems like yet another problem. Apparently, if an xref does not target another .fm file in the book, Frame assumes that the target file is not in the book and therefore will not be in the book PDF.
    There have been discussions here about this in the past. The solution that I use is to run an API client before publishing that converts all XML files to .fm files, and redirect all xrefs appropriately. Then, book features work as expected and PDFs come out as normal. This is not feasible, however, without the automation from the API client.
    There may be some who would say that the best approach is to use XML and books the way that the designers did account for... that is, the whole book becomes an XML document with entity references to the separate chapters. In my work, though, this model was not appropriate... rather, I needed a binary FM book to act like a book, except with XML files as chapters. So, I think I understand your situation.
    Is API programming or FrameScript an option for you? I think it may be the only way to get what you are looking for.
    Russ

  • [svn:bz-trunk] 8823: Updated the sample messaging-config. xml with the new disallow-wildcard-subtopics configuration element.

    Revision: 8823
    Author:   [email protected]
    Date:     2009-07-27 09:12:08 -0700 (Mon, 27 Jul 2009)
    Log Message:
    Updated the sample messaging-config.xml with the new disallow-wildcard-subtopics configuration element.
    Modified Paths:
        blazeds/trunk/resources/config/messaging-config.xml

    Hi,
    could you let us know what version of OEPE you were running prior to the upgrade along with the Eclipse version ? Also was the previous installation a full OEPE install or was it installed via the update site ?
    thanks
    Raj

  • How To read an XML file with JDom

    I have read through some tutorials after installing JDom on how to read an existing XML file and I was confused by all of them. I simply want to open an XML file and read one of the node's content. Such as <username>john doe</username> this way I can compare values with what the user has entered as their username. I am not sure were to start and I was hoping someone could help me out.
    I know that this seems like an insecure way to store login information but after I master opening and writing XML files with JDom I am going to use AES to encrypt the XML files.

    Here is a test program for JDom and XPath use considering your XML file is named "test.xml" :import org.jdom.input.*;
    import org.jdom.xpath.*;
    public class JDomXPath {
    public static void main(String[] args) {
      SAXBuilder saxBuilder = new SAXBuilder("org.apache.xerces.parsers.SAXParser");
      try {
       org.jdom.Document jdomDocument = saxBuilder.build("test.xml");
       org.jdom.Element usernameNode = (org.jdom.Element)XPath.selectSingleNode(jdomDocument, "//username");
       System.out.print(usernameNode.getText());
      } catch (Exception e) {
       e.printStackTrace();
    }(tested with Eclipse)

  • [svn] 4000: Updating build files to generate dita xml with lenient as true.

    Revision: 4000
    Author: [email protected]
    Date: 2008-11-03 13:39:40 -0800 (Mon, 03 Nov 2008)
    Log Message:
    Updating build files to generate dita xml with lenient as true.
    QE Notes: None
    Doc Notes: None
    tests: checkintests
    Modified Paths:
    flex/sdk/trunk/asdoc/build.xml
    flex/sdk/trunk/frameworks/projects/airframework/build.xml
    flex/sdk/trunk/frameworks/projects/flash-integration/build.xml
    flex/sdk/trunk/frameworks/projects/flex/build.xml
    flex/sdk/trunk/frameworks/projects/flex4/build.xml
    flex/sdk/trunk/frameworks/projects/framework/build.xml
    flex/sdk/trunk/frameworks/projects/haloclassic/build.xml
    flex/sdk/trunk/frameworks/projects/rpc/build.xml
    flex/sdk/trunk/frameworks/projects/utilities/build.xml
    flex/sdk/trunk/frameworks/projects/wireframe/build.xml

    Any idea, I'm looking for your opinion, what do you think of the above

  • Updating XML file

    Hi all,
    I have this idea of running a program that accepts user's input and replacing some parameters in the xml file.
    For e.g.
    The XML file have this tag
    <database username=@username@ password=@password@>
    The program would get the user's input and replace those placeholder appropriately.
    Which java library can i make use to achieve this?
    Appreciate any help

    i think u should use XMLParser (JDOM) or another parser. with XMLParser (JDOM), it's so easy to insert or update any value of attribute.
    with JDOM you just call "database" tag and then set attribute for "username,password" with anykind of value.

  • HTTPService not reading updated xml, i've been having to refresh the xml in my browser manually

    I am calling an HTTPService (id=data2php) which runs a php
    script which creates an xml doc and puts it on my server. i then
    call another HTTPService (id=feedRequest) which reads the xml doc.
    i then try to populate a datagrid with the lastResult of my
    HTTPService that reads the xml doc. My issue is that that the
    HTTPService which reads the xml doc reads the previous incarnation
    of the xml doc, not the newly created one that my HTTPService
    (data2php) created. i've been manually going to the xml doc in my
    browser and hitting refresh for my feedRequest HTTPService to read
    the updated xml.
    here is the mxml for the httpservice that reads the xml:
    <mx:HTTPService id="feedRequest" url="
    http://cfcdi.org/eric/dashboard/php/sales.xml"
    result="feedResult(event)" resultFormat="xml" useProxy="false"/>
    pretty straight forward.
    (actually, once in a while it will read the updated
    one)

    LittleMuscle,
    Instead of binding to the lastResult property, I would
    explicitly handle the result and fault events of the HTTPService
    (the one that reads the newly created xml doc) and then manually
    update an XMLListCollection for use as the datagrid's dp. That way,
    you can at least walk through the debugger and see what's going on,
    and force the second HTTPService to read only when you're sure the
    newly created doc is ready.
    Since you said it works sometimes and not other times, it
    sounds like it's just a timing problem, sometimes the xml doc is
    created quickly enough that the HTTPService grabs the new xml doc,
    but if not, it's grabbing the old one. That would be my
    guess.

  • Update XML data stored in CLOB Column

    Hi All,
    i am new to Oracle and new to SQL
    i am trying to update XML data stored in CLOB cloumn,data is stored with the follwoing format
    <attrs><attr name="name"><string>Schade</string></attr></attrs>
    i am using the following query for updating the value
    UPDATE PRODUCT p SET ATTRIBUTES_nl_nl=UPDATEXML(XMLTYPE.createXML(ATTRIBUTES_nl_nl),'/attrs/attr[@name="name"]/string/text()','Schade').getClobVal() WHERE p.sku='000000000000040576_200911-5010057'
    this query is working fine but it changing the data to the following format
    <attrs><attr name="name">Schade</attr></attrs>
    some how it is ommiting the <string> tag from it, i am unable to figure it out whats the reason.
    any help in this regard will b e much appriciated
    Thanks in Advance
    -Umesh

    Hi,
    You should have created your own thread for this, and included database version.
    This works for me on 11.2.0.2 and 10.2.0.5 :
    SQL> create table t_org ( xml_clob clob );
    Table created
    SQL>
    SQL> insert into t_org
      2  values(
      3  '<Message>
      4  <Entity>
      5  <ASSIGNMENT>
      6  <OAVendorLocation> </OAVendorLocation>
      7  <Vendorid>1</Vendorid>
      8  </ASSIGNMENT>
      9  </Entity>
    10  </Message>'
    11  );
    1 row inserted
    SQL> commit;
    Commit complete
    SQL> select '*' ||
      2         extractvalue(xmltype(xml_clob),'/Message/Entity/ASSIGNMENT/OAVendorLocation')
      3         || '*' as result
      4  from t_org;
    RESULT
    SQL> update t_org set xml_clob =
      2  updatexml(xmltype(xml_clob),
      3  '/Message/Entity/ASSIGNMENT/OAVendorLocation/text()','LONDON').getClobVal()
      4  ;
    1 row updated
    SQL> select '*' ||
      2         extractvalue(xmltype(xml_clob),'/Message/Entity/ASSIGNMENT/OAVendorLocation')
      3         || '*' as result
      4  from t_org;
    RESULT
    *LONDON*
    Does the OAVendorLocation really have a whitespace value?
    If not then it's expected behaviour, you're trying to update a text() node that doesn't exist. In this case, the solution is to use appendChildXML to create the text() node, or update the whole element.
    Is it your real document? Do you actually have some namespaces?

  • 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

  • Problem with JDOM and schemas

    I'm trying to parse (and validate) an XML document with JDOM.
    My root element is declared in the schaema whixh is asociated to the document.
    But during parsing, an exception saying that my root element is not declared is thrown.
    Can someone axplain to me what can happen ?
    Thank's

    What's this element ?
    My schema is indicated by the xsi:schemeLocation attribute of my root-element .

  • 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)

Maybe you are looking for

  • Error 4000 please help!

    a couple months ago i could easily burn playlists from itunes. but now, the burn is cancelled every time. i even tried getting a different brand of cd's, but its not helping. here are the diagnostics: Microsoft Windows XP Professional Service Pack 2

  • "sequence 'JDR_DOCUMENT_ID_S' is corrupt"  using JPXImporter

    used JPX Import to load components with the following command : java oracle.jrad.tools.xml.importer.JPXImporter $JAVA_TOP/cggv/oracle/apps/per/selfservice/appraisals/server/MgrAppraisalsInProgressVOEx.jpx -username apps -password $mp_apps -dbconnecti

  • Cant start the database

    Hi I have installed  a new database in a new linux server.it is giving me many problems. After setting required parameters like  ORACLE_HOME,ORACLE_SID etc when I write sqlplus / as sysdba it says command not found. so I have to write ./sqlplus / as

  • Question about adding Windows 2012 R2 Domain Controller, into a native Windows 2008 R2 single forest domain

    I current have a two server domain, both Windows 2008 R2 and fully updated.   The two servers are on subnet 10.0.1.0 /24 - Windows 2008 R2 Server A: 10.0.1.1 (DC, GC, FSMO, DNS) - Windows 2008 R2 Server B: 10.0.1.2 (DC, GC) AD Domain: COMPANY.LOCAL I

  • What can i replace an iframe with? (Death to double scroll bars!!)

    So the site I'm working with has a ton of links all directed to an iframe.  The iframe is set to a fixed size and will not expand/contract with the linked content so i end up with two scroll bars. Here is the web site. I was hoping for a 'quick' fix