Package org.beryl.gui

Source Code of org.beryl.gui.XMLUtils

/*
* Beryl - A web platform based on XML, XSLT and Java
* This file is part of the Beryl XML GUI
*
* Copyright (C) 2004 Wenzel Jakob <wazlaf@tigris.org>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.

* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-3107  USA
*/

package org.beryl.gui;

import java.io.StringWriter;

import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
* Miscellaneous XML utility functions
*/
public class XMLUtils {
  /**
   * Extract all text children of an element
   */
  public static String extractTextChildren(Element parentNode) {
    NodeList childNodes = parentNode.getChildNodes();
    String result = new String();
    for (int i = 0; i < childNodes.getLength(); i++) {
      Node node = childNodes.item(i);
      if (node.getNodeType() == Node.TEXT_NODE) {
        result += node.getNodeValue();
      }
    }
    return result;
  }

  /**
   * Get a child element
   */
  public static Element getChild(Element parentNode, String nodeName) {
    NodeList childNodes = parentNode.getChildNodes();

    for (int i = 0; i < childNodes.getLength(); i++) {
      Node node = childNodes.item(i);
      if (node.getNodeType() == Node.ELEMENT_NODE && nodeName.equals(node.getNodeName())) {
        return (Element) node;
      }
    }
    return null;
  }

  /**
   * Get the text content of a child element
   */
  public static String getStringFromChild(Element parentNode, String nodeName) {
    Element child = getChild(parentNode, nodeName);
    if (child == null)
      return null;
    else
      return extractTextChildren(child);
  }

  /**
   * String replacement utility function
   */
  public static String replace(String string, String from, String to) {
    if (string.indexOf(from) > -1) {
      StringBuffer sb = new StringBuffer();
      int ix = -1;
      while ((ix = string.indexOf((from))) >= 0) {
        sb.append(string.substring(0, ix)).append(to);
        string = string.substring(ix + from.length());
      }
      if (string.length() > 1)
        sb.append(string);
      return sb.toString();
    } else {
      return string;
    }
  }

  /**
   * Convert an XML document to a latin-1 string
   */
  public static String serializeXML(Document document) throws GUIException {
    try {
      StringWriter stringWriter = new StringWriter();
      OutputFormat format = new OutputFormat("XML", "ISO-8859-1", true);
      format.setLineWidth(0);
      XMLSerializer serializer = new XMLSerializer(stringWriter, format);
      serializer.asDOMSerializer().serialize(document);
      /* We don't want the newline character at the end */
      String string = stringWriter.toString();
      return string.substring(0, string.length() - 1);
    } catch (Exception e) {
      throw new GUIException("Could not serialize XML", e);
    }
  }

}
TOP

Related Classes of org.beryl.gui.XMLUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.