DOMImport.java Source code

Java tutorial

Introduction

Here is the source code for DOMImport.java

Source

//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);
    }
}