Java XML Document Parse parseDocument(InputStream is)

Here you can find the source of parseDocument(InputStream is)

Description

Parses the given input stream as XML and returns the corresponding DOM document.

License

Open Source License

Parameter

Parameter Description
is an input stream

Return

a DOM document

Declaration

public static Document parseDocument(InputStream is) 

Method Source Code


//package com.java2s;
import java.io.ByteArrayInputStream;

import java.io.InputStream;

import org.w3c.dom.DOMConfiguration;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;

import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSInput;

import org.w3c.dom.ls.LSParser;

public class Main {
    private static DOMImplementation impl;
    private static DOMImplementationRegistry registry;

    /**/*w  ww . ja v a 2s. c o  m*/
     * Parses the given input stream as XML and returns the corresponding DOM document.
     * 
     * @param is
     *            an input stream
     * @return a DOM document
     */
    public static Document parseDocument(InputStream is) {
        getImplementation();
        DOMImplementationLS implLS = (DOMImplementationLS) impl;

        // create input
        LSInput input = implLS.createLSInput();
        input.setByteStream(is);

        // parse without comments and whitespace
        LSParser builder = implLS.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null);
        DOMConfiguration config = builder.getDomConfig();
        config.setParameter("comments", false);
        config.setParameter("element-content-whitespace", false);

        return builder.parse(input);
    }

    /**
     * Parses the given String as XML and returns the corresponding DOM document. The String is
     * converted to an input stream so that encoding is taken into account (otherwise if we pass a
     * String to an LSInput DOM will ignore the encoding and assume UTF-16).
     * 
     * @param str
     *            a String
     * @return a DOM document
     */
    public static Document parseDocument(String str) {
        return parseDocument(new ByteArrayInputStream(str.getBytes()));
    }

    /**
     * Creates a new instance of the DOM registry and get an implementation of DOM 3 with Load Save
     * objects.
     */
    private static void getImplementation() {
        try {
            if (registry == null) {
                registry = DOMImplementationRegistry.newInstance();
            }

            if (impl == null) {
                impl = registry.getDOMImplementation("Core 3.0 XML 3.0 LS");
                if (impl == null) {
                    throw new RuntimeException("no DOM 3 implementation found");
                }
            }
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("DOM error", e);
        } catch (InstantiationException e) {
            throw new RuntimeException("DOM error", e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException("DOM error", e);
        }
    }
}

Related

  1. parseDocument(File f)
  2. parseDocument(File file)
  3. parseDocument(InputSource is)
  4. parseDocument(InputStream documentXml)
  5. parseDocument(InputStream in)
  6. parseDocument(InputStream is)
  7. parseDocument(InputStream is)
  8. parseDocument(InputStream is)
  9. parseDocument(Path xmlPath)