| 
   
|    /**
 * JBoss, Home of Professional Open Source
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
 
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
 /**
 * @author <a href="mailto:[email protected]">Ovidiu Feodorov</a>
 * @version <tt>$Revision: 3282 $</tt> $Id: XMLUtil.java 3282 2007-11-01
 *          15:32:29Z timfox $
 */
 public class Utils {
 public static String elementToString(Node n) {
 
 String name = n.getNodeName();
 
 short type = n.getNodeType();
 
 if (Node.CDATA_SECTION_NODE == type) {
 return "<![CDATA[" + n.getNodeValue() + "]]>";
 }
 
 if (name.startsWith("#")) {
 return "";
 }
 
 StringBuffer sb = new StringBuffer();
 sb.append('<').append(name);
 
 NamedNodeMap attrs = n.getAttributes();
 if (attrs != null) {
 for (int i = 0; i < attrs.getLength(); i++) {
 Node attr = attrs.item(i);
 sb.append(' ').append(attr.getNodeName()).append("=\"").append(attr.getNodeValue()).append(
 "\"");
 }
 }
 
 String textContent = null;
 NodeList children = n.getChildNodes();
 
 if (children.getLength() == 0) {
 if ((textContent = XMLUtil.getTextContent(n)) != null && !"".equals(textContent)) {
 sb.append(textContent).append("</").append(name).append('>');
 ;
 } else {
 sb.append("/>").append('\n');
 }
 } else {
 sb.append('>').append('\n');
 boolean hasValidChildren = false;
 for (int i = 0; i < children.getLength(); i++) {
 String childToString = elementToString(children.item(i));
 if (!"".equals(childToString)) {
 sb.append(childToString);
 hasValidChildren = true;
 }
 }
 
 if (!hasValidChildren && ((textContent = XMLUtil.getTextContent(n)) != null)) {
 sb.append(textContent);
 }
 
 sb.append("</").append(name).append('>');
 }
 
 return sb.toString();
 }
 }
 
 
 
 
 
 |  |