Java DOM edit: Copy a Node from One Parse Tree into Another : DOM Edit « XML « Java






Java DOM edit: Copy a Node from One Parse Tree into Another

      

//An XML Document Providing an Element for Export
/*
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE contacts [
<!ELEMENT contacts (person)*>
<!ELEMENT person (name, email)>
<!ELEMENT name (#PCDATA | bold)*>
<!ELEMENT email (#PCDATA)>
]>

<contacts>
    <person>
        <name>Ichobad Crane</name>
        <email>sleepy@hollow.net</email>
    </person>
</contacts>*/

//An XML Document to Receive an Imported Element
/*
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE folks [
<!ELEMENT folks (person)*>
<!ELEMENT person (name, phone, email)>
<!ELEMENT name (#PCDATA | bold)*>
<!ELEMENT phone (#PCDATA)>
<!ELEMENT email (#PCDATA)>
]>

<folks>
    <person>
        <name>Zaphod Beeblebrox</name>
        <phone>907 555-9882</phone>
        <email>outer@space.net</email>
    </person>
</folks>
*/


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import javax.xml.parsers.ParserConfigurationException;
import java.io.*;

public class DOMImport {
    static public void main(String[] arg) {
        if(arg.length != 3) {
            System.err.println(
                    "Usage: DOMImport <infile1> <infile2> <outfile>");
            System.exit(1);
        }
        DOMImport dc = new DOMImport();
        dc.inandout(arg[0],arg[1],arg[2]);
    }
    public void inandout(String infile1,String infile2,String outfile) {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setValidating(true);
        dbf.setNamespaceAware(true);
        dbf.setIgnoringElementContentWhitespace(true);

        Document doc1 = null;
        Document doc2 = null;
        try {
            DocumentBuilder builder = dbf.newDocumentBuilder();
            builder.setErrorHandler(new MyErrorHandler());
            InputSource is1 = new InputSource(infile1);
            doc1 = builder.parse(is1);
            InputSource is2 = new InputSource(infile2);
            doc2 = builder.parse(is2);
            importName(doc1,doc2);
            FileOutputStream fos = new FileOutputStream(outfile);
            TreeToXML ttxml = new TreeToXML();
            ttxml.write(fos,doc2);
            fos.close();
        } catch (SAXException e) {
            System.exit(1);
        } catch (ParserConfigurationException e) {
            System.err.println(e);
            System.exit(1);
        } catch (IOException e) {
            System.err.println(e);
            System.exit(1);
        }
    }
    public void importName(Document doc1,Document doc2) {
        Element root1 = doc1.getDocumentElement();
        Element personInDoc1 = (Element)root1.getFirstChild();

        Node importedPerson = doc2.importNode(personInDoc1,true);

        Element root2 = doc2.getDocumentElement();
        root2.appendChild(importedPerson);
    }
}


           
         
    
    
    
    
    
  








Related examples in the same category

1.Creates element node, attribute node, comment node, processing instruction and a CDATA section
2.Java DOM edit: Locate a Node and Change Its Content
3.Java DOM edit: Locating a Node by Using Siblings
4.Java DOM edit: Delete the First Child of the Root Node
5.Java DOM edit: Replacing an Existing Node with a New One
6.Java DOM edit: Add an Element Containing All Names
7.Java DOM edit: Duplicate a Subtree
8.Java DOM edit: Adding an Attribute to an Element
9.Java DOM edit: Deleting Two Attributes
10.Java DOM edit: Copying Attributes
11.Java DOM edit: A Method to Find an ID Value and Print the Element Text
12.Java DOM edit: Modifying Text by Replacement
13.Java DOM edit: Modifying Text by Cutting and Pasting
14.Java DOM edit: Edit Text by Insertion and Replacement
15.Java DOM edit: Replacing a Text Node with a New CDATASection Node
16.Java DOM edit: Splitting One Text Node into Three
17.Java DOM edit: Normalize All of the Text in a Document
18.Java DOM edit: Creates a New DOM Parse Tree
19.Java DOM edit: Creating a DocumentFragment Subtree and Appending to the Document
20.Java DOM edit: Insert a Processing Instruction and a Comment
21.XML Tree Dumper 2
22.A Method for Inserting a New Entry in a List
23.Add a comment at the beginning of the document
24.Change a particular node in XML
25.Create a new element and move the middle text node to it
26.Insert the new element where the middle node used to be
27.Set text in a Node
28.Copies the source tree into the specified place in a destination tree.
29.Copy a Node from one source document
30.Generates a DOM from scratch. Writes the DOM to a String using an LSSerializer.
31.Create Element With Text