1

I have this XML file:

<tomcat-users>
    <role rolename="manager"/>
    <role rolename="admin"/>
    <role rolename="tomcat"/>
    <role rolename="role1"/>
    <user username="tomcat" password="tomcat" roles="tomcat"/>
    <user username="both" password="tomcat" roles="tomcat,role1"/>
    <user username="role1" password="tomcxat" roles="role1"/>
    <user username="ide" password="1234" roles="manager,admin"/>
    <user username="hainn" password="hainn" roles="manager,admin"/>
</tomcat-users>

I have to put and to be parent Node like this:

<tomcat-users>
    <roles>
        <role rolename="manager"/>
        <role rolename="admin"/>
        <role rolename="tomcat"/>
        <role rolename="role1"/>
    </roles>
    <users>
        <user username="tomcat" password="tomcat" roles="tomcat"/>
        <user username="both" password="tomcat" roles="tomcat,role1"/>
        <user username="role1" password="tomcxat" roles="role1"/>
        <user username="ide" password="1234" roles="manager,admin"/>
        <user username="hainn" password="hainn" roles="manager,admin"/>
    </users>
</tomcat-users>

I tried to use this code:

public static void main(String[] args) {
        // TODO code application logic here
        try {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();

            File f = new File("tomcat-users.xml");         

            Document doc = db.parse(f);
            addParentNode(doc);           

            writeXML(doc,f);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void writeXML(Document doc, File f) {
        try {
            Source source = new DOMSource(doc);
            Result result = new StreamResult(f);

            TransformerFactory transform = TransformerFactory.newInstance();
            Transformer trans = transform.newTransformer();
            trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,"no");
            trans.setOutputProperty(OutputKeys.INDENT,"yes");

            StreamResult rs = new StreamResult(new File("newTomcat.xml"));
            DOMSource dom = new DOMSource(doc);
            trans.transform(dom, rs);
            System.out.println("Finish");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

The problem is I don't know how I can write addParentNode. Should I using appendChild() with getFirstChild()?
Please give me a sample code, I really appreciate that. Thank you a lot...

  • You can try this solution. It's the same what you want http://stackoverflow.com/questions/6445828/how-do-i-append-a-node-to-an-existing-xml-file-in-java – user3552007 Apr 19 '14 at 15:37

0 Answers0