Java tutorial
//package com.java2s; /** * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2006 Sun Microsystems Inc. All Rights Reserved * * The contents of this file are subject to the terms * of the Common Development and Distribution License * (the License). You may not use this file except in * compliance with the License. * * You can obtain a copy of the License at * https://opensso.dev.java.net/public/CDDLv1.0.html or * opensso/legal/CDDLv1.0.txt * See the License for the specific language governing * permission and limitations under the License. * * When distributing Covered Code, include this CDDL * Header Notice in each file and include the License file * at opensso/legal/CDDLv1.0.txt. * If applicable, add the following below the CDDL Header, * with the fields enclosed by brackets [] replaced by * your own identifying information: * "Portions Copyrighted [year] [name of copyright owner]" * * $Id: XMLUtils.java,v 1.15 2009/10/19 18:19:20 asyhuang Exp $ * */ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.ByteArrayOutputStream; import java.util.HashSet; import java.util.Set; public class Main { /** * Method to get the value of "Value" node */ public static String getValueOfValueNodeNoTrim(Node n) { return (getValueOfValueNodeNoTrim(n, true)); } /** * Method to get the value of "Value" node * If <class>unescape<class> is set to false, xml escaped chars will not * be unescaped. */ public static String getValueOfValueNodeNoTrim(Node n, boolean unescape) { NodeList textNodes = n.getChildNodes(); Node textNode; StringBuffer value = new StringBuffer(""); for (int j = 0; j < textNodes.getLength(); j++) { textNode = textNodes.item(j); String text = null; if (textNode.getNodeType() == Node.TEXT_NODE) { text = textNode.getNodeValue(); } else if (textNode.getNodeType() == Node.ELEMENT_NODE) { text = print(textNode); } if (text != null && unescape) { value.append(unescapeSpecialCharacters(text)); } else { value.append(text); } } return value.toString(); } public static Set getChildNodes(Node parentNode, String childName) { Set retVal = new HashSet(); NodeList children = parentNode.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { Node node = children.item(i); if (node.getNodeName().equalsIgnoreCase(childName)) { retVal.add(node); } } return (retVal); } /** * Print a Node tree recursively using UTF-8 encoding. * * @param node * A DOM tree Node * @return An xml String representation of the DOM tree. */ public static String print(Node node) { return print(node, "UTF-8"); } /** * Prints a Node tree recursively. * @param node A DOM tree Node * @param encoding character encoding * @return An xml String representation of the DOM tree. */ public static String print(Node node, String encoding) { if (node == null) { return null; } try { TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); transformer.setOutputProperty("omit-xml-declaration", "yes"); transformer.setOutputProperty("encoding", encoding); DOMSource source = new DOMSource(node); ByteArrayOutputStream os = new ByteArrayOutputStream(2000); StreamResult result = new StreamResult(os); transformer.transform(source, result); return os.toString(encoding); } catch (Exception e) { return null; } } /** * Returns unescape special character text. * * @param text String to be unescaped. * @return unescape special character text. */ public static String unescapeSpecialCharacters(String text) { text = text.replaceAll("&", "&"); text = text.replaceAll("<", "<"); text = text.replaceAll(">", ">"); text = text.replaceAll(""", "\""); text = text.replaceAll("'", "'"); text = text.replaceAll("
", "\n"); text = text.replaceAll("
", "\r"); return text; } }