Java tutorial
//package com.java2s; /* * $Id: XPathHelper.java,v 1.5 2002/07/18 06:02:22 skavish Exp $ * * =========================================================================== * * The JGenerator Software License, Version 1.0 * * Copyright (c) 2000 Dmitry Skavish (skavish@usa.net). All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by Dmitry Skavish * (skavish@usa.net, http://www.flashgap.com/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The name "The JGenerator" must not be used to endorse or promote * products derived from this software without prior written permission. * For written permission, please contact skavish@usa.net. * * 5. Products derived from this software may not be called "The JGenerator" * nor may "The JGenerator" appear in their names without prior written * permission of Dmitry Skavish. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL DMITRY SKAVISH OR THE OTHER * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * */ import org.w3c.dom.*; public class Main { /** * Returns String representation of specified xml node. * * @param node the specified xml node * @return string representation of the node */ public static String getNodeData(Node node) { switch (node.getNodeType()) { case Node.DOCUMENT_FRAGMENT_NODE: case Node.DOCUMENT_NODE: case Node.ELEMENT_NODE: { /*for (Node child = node.getFirstChild(); null != child; child = child.getNextSibling())*/ Node child = node.getFirstChild(); if (child != null) return getNodeData(child); } break; case Node.TEXT_NODE: case Node.CDATA_SECTION_NODE: return node.getNodeValue(); case Node.ATTRIBUTE_NODE: return node.getNodeValue(); case Node.PROCESSING_INSTRUCTION_NODE: break; default: break; } return ""; } public static void getNodeData(Node node, StringBuffer buf) { switch (node.getNodeType()) { case Node.DOCUMENT_FRAGMENT_NODE: case Node.DOCUMENT_NODE: case Node.ELEMENT_NODE: { for (Node child = node.getFirstChild(); null != child; child = child.getNextSibling()) { buf.append('<'); buf.append(node.getNodeName()); buf.append('>'); getNodeData(child, buf); buf.append("</"); buf.append(node.getNodeName()); buf.append('>'); } } break; case Node.TEXT_NODE: case Node.CDATA_SECTION_NODE: buf.append(node.getNodeValue()); break; case Node.ATTRIBUTE_NODE: buf.append(node.getNodeValue()); break; case Node.PROCESSING_INSTRUCTION_NODE: // warning(XPATHErrorResources.WG_PARSING_AND_PREPARING); break; default: // ignore break; } } }