Java XML Tutorial - Java Document.importNode(Node importedNode, boolean deep)








Syntax

Document.importNode(Node importedNode, boolean deep) has the following syntax.

Node importNode(Node importedNode,  boolean deep)  throws DOMException

Example

In the following code shows how to use Document.importNode(Node importedNode, boolean deep) method.

/*from w  ww .  j a v  a2 s  .com*/
//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);
    }
}