On Wed, Jun 05, 2002 at 09:27:49PM +0000, Jason Lee wrote:
> I need to insert an element in an exisiting xml doc
> <parent>
>     <child name="attr">
>     --- (need to insert another child here)
> </>
> 
> I tried to take some help from this list regarding the same question..
> but I was not succesfull in updating the XML document..can anyone suggest me 
> a sample code...


The attached source creates a child of the root element, and mutates some
first-level children.  I also attached an XML file that matches my code.
Hope this helps!


-- 
Miguel A Paraz             <http://mparaz.com>  Mobile: +63-916-423-7922
Imperium Technology, Inc.  <[EMAIL PROTECTED]>    Office: +63-2-812-3155

import java.io.File;
import java.net.MalformedURLException;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;
import org.dom4j.io.OutputFormat;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;


/*
 * read in the journal with SAX, then add a new element containing the count.
 * mutates text entries to add a "type" attribute.
 */

public class DemoDom4jMutate2 {

    public static Document readDocument(File aFile) throws DocumentException,
    MalformedURLException {

        SAXReader xmlReader = new SAXReader();
        return xmlReader.read(aFile);
    }

    public static void main(String[] args) {
        XMLWriter xmlWriter;
        Document document;
        OutputFormat outputFormat;
        Element rootElement;
        Iterator rootIterator;
        int pinoyjugCounter = 0;

        // Read in

        try {
            document = readDocument(new File(args[0]));
        }
        catch (Exception e) {
            e.printStackTrace();
            return;
        }

        // Mutate.  Let dom4j do the matching.
        rootElement = document.getRootElement();
        rootIterator = rootElement.elementIterator("entry");

        while (rootIterator.hasNext()) {
            Element e = (Element)rootIterator.next();
            // System.out.println(e);

            // Level 2. Get the text entries.
            Iterator l2Iterator = e.elementIterator("text");

            // Mutate
            while (l2Iterator.hasNext()) {
                e = (Element)l2Iterator.next();
                // System.out.println("  " + e.toString());

                e.addAttribute("type", "1");
                pinoyjugCounter++;
            }
        }

        // Append the result
        rootElement.addElement("pinoyjug").addText("" + pinoyjugCounter);


        // Pretty-print
        outputFormat = OutputFormat.createPrettyPrint();
        outputFormat.setEncoding("UTF-8");

        try {
            xmlWriter = new XMLWriter(System.out, outputFormat);
        }
        catch (java.io.UnsupportedEncodingException e) {
            System.out.println(e);
            return;
        }

        try {
            xmlWriter.write(document);
            xmlWriter.flush();
        }
        catch (java.io.IOException e) {
            System.out.println(e);
            return;
        }

        System.out.println("");
    }
}

<?xml version="1.0"?>

<series xmlns="http://mparaz.com/xml/journal";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xsi:schemaLocation="http://mparaz.com/xml/journal journal.xsd">
        
        

<entry>
<date>May 19, 2002</date>
<text>
Sample text. We should support some markup here.
</text>
</entry>

<entry>
<date>May 19, 2002 10:27</date>
<text>
Second batch.
</text>
</entry>


</series>

Reply via email to