Source To InputSource : DOM Parser « XML « Java Tutorial






/*
 * Copyright  2003-2008 The Apache Software Foundation.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 */
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.OutputStream;

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








33.2.DOM Parser
33.2.1.DOM Objects That Make Up the Parse Tree
33.2.2.A DOM Error Checker: Using DOM for Syntax Checking
33.2.3.A DOM Parse Tree Lister
33.2.4.Listing the Contents of Parse Tree Nodes: Using the DOM Parser to Extract XML Document Data
33.2.5.Ignorable Whitespace and Element Content
33.2.6.Remove the element from parent
33.2.7.Visiting All the Elements in a DOM Document
33.2.8.Getting the Root Element in a DOM Document
33.2.9.Getting a Node Relative to Another Node in a DOM Document
33.2.10.Getting the Notations in a DOM Document
33.2.11.Getting the Declared Entities in a DOM Document
33.2.12.Getting the Value of an Entity Reference in a DOM Document
33.2.13.Getting a DOM Element by Id
33.2.14.Converting an XML Fragment into a DOM Fragment
33.2.15.Parse an XML string: Using DOM and a StringReader.
33.2.16.Use DOM L3 DOMBuilder, DOMBuilderFilter DOMWriter and other DOM L3 functionality to preparse, revalidate and safe document.
33.2.17.Read XML as DOM
33.2.18.Create DOM Document out of string
33.2.19.Source To InputSource