The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > javax.xml.transform  [5 examples]

e519. Emitting a DOCTYPE Declaration When Writing an XML File from a DOM Document

By default, the DOCTYPE is not written when using a transformer to dump a DOM document to an XML file. This example demonstrates how to write a DOCTYPE with a public and system id. Unfortunately, it is not possible to write a DOCTYPE with an internal DTD.
    // Create a document; this method is implemented in
    // e510 The Quintessential Program to Create a DOM Document from an XML File
    Document doc = parseXmlFile("infilename.xml", false);
    
    try {
        // Create a transformer
        Transformer xformer = TransformerFactory.newInstance().newTransformer();
    
        // Set the public and system id
        xformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "publicId");
        xformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "systemId");
    
        // Write the DOM document to a file
        Source source = new DOMSource(doc);
        Result result = new StreamResult(new File("outfilename.xml"));
        xformer.transform(source, result);
    } catch (TransformerConfigurationException e) {
    } catch (TransformerException e) {
    }
This is the sample input for the example:
    <?xml version="1.0" encoding="UTF-8"?>
    <map>
        <entry key="key1" value="value1" />
        <entry key="key2" />
    </map>
The resulting XML from running the example is:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE map PUBLIC "publicId" "systemId">
    <map>
        <entry key="key1" value="value1"/>
        <entry key="key2"/>
    </map>

 Related Examples
e518. Writing a DOM Document to an XML File
e520. Writing Only the Text of a DOM Document


© 2002 Addison-Wesley.