Convert Source to InputSource

In this chapter you will learn:

  1. How to convert Source to InputSource

Source To InputSource

The following code converts the javax.xml.transform.Source to org.xml.sax.InputSource.

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;
//from  j  a v a 2s .co m
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;

public class Main {

  public static void ElementToStream(Element element, OutputStream out) {
    try {
      DOMSource source = new DOMSource(element);
      StreamResult result = new StreamResult(out);
      TransformerFactory transFactory = TransformerFactory.newInstance();
      Transformer transformer = transFactory.newTransformer();
      transformer.transform(source, result);
    } catch (Exception ex) {
    }
  }
  /**
   * Utility to get the bytes uri
   *
   * @param source the resource to get
   */
  public static InputSource sourceToInputSource(Source source) {
      if (source instanceof SAXSource) {
          return ((SAXSource) source).getInputSource();
      } else if (source instanceof DOMSource) {
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          Node node = ((DOMSource) source).getNode();
          if (node instanceof Document) {
              node = ((Document) node).getDocumentElement();
          }
          Element domElement = (Element) node;
          ElementToStream(domElement, baos);
          InputSource isource = new InputSource(source.getSystemId());
          isource.setByteStream(new ByteArrayInputStream(baos.toByteArray()));
          return isource;
      } else if (source instanceof StreamSource) {
          StreamSource ss = (StreamSource) source;
          InputSource isource = new InputSource(ss.getSystemId());
          isource.setByteStream(ss.getInputStream());
          isource.setCharacterStream(ss.getReader());
          isource.setPublicId(ss.getPublicId());
          return isource;
      } else {
          return getInputSourceFromURI(source.getSystemId());
      }
  }

  /**
   * Utility to get the bytes uri.
   * Does NOT handle authenticated URLs,
   * use getInputSourceFromURI(uri, username, password)
   *
   * @param uri the resource to get
   */
  public static InputSource getInputSourceFromURI(String uri) {
      return new InputSource(uri);
  }
}

Next chapter...

What you will learn in the next chapter:

  1. What is JDBC?
  2. What is a JDBC Driver?
  3. Register JDBC Driver
Home » Java Tutorial » XML

DOM Parser

    DOM
    Parse XML string
    Parse XML file with DOM Parser
    DOM Parser Error
    Output DOM Document to console
    Save DOM Document to a file
    Format a DOM Document
    Output Document to String
    Visit all elements
    Element retrieve by tag name
    Element character data retrieve
    DOM node visiting
    Node type
    DOM node dump
    Children nodes
    Root Element
    Doc Type
    Declared Entities
    External Entities resolve
    DOMImplementation

DOM Edit

    Element text child data
    Element remove
    Add text node to element
    Element text data update
    Add attribute to element
    Attribute remove
    Create new empty element
    Element clone
    CDATASection
    Comments element
    Processing Instruction
    New XML Document

SAX Parser

    SAX Parser action
    Parse an XML file with SAX parser
    SAX Parser based XML Document dump
    SAX Parser Error Handler
    SAX Parser content handler
    SAX Locator

Utility

    Encode String for XML attribute
    Convert Source to InputSource