code: private String domNodeDescription (Node node, int tablevel) {
  		String domNodeDescription = null;
  
  		String nodeName = node.getNodeName ();
  		String nodeValue = node.getNodeValue ();
  		if (!(nodeName.equals ("#text") && nodeValue.replaceAll ("\n", "").trim ().equals (""))) {
  			domNodeDescription = tabs (tablevel) + node.getNodeName () + "\n";
  
  			NamedNodeMap attributes = node.getAttributes ();
  			if (attributes != null) {
  				for (int i = 0; i < attributes.getLength (); i++) {
  					Node attribute = attributes.item (i);
  					domNodeDescription += tabs (tablevel) + "-" + attribute.getNodeName () + "=" + attribute.getNodeValue () + "\n";
  				}
  			}
  
  			domNodeDescription += tabs (tablevel) + "=" + node.getNodeValue () + "\n";
  
  			NodeList children = node.getChildNodes ();
  			if (children != null) {
  				for (int i = 0; i < children.getLength (); i++) {
  					String childDescription = domNodeDescription (children.item (i), tablevel + 1);
  					if (childDescription != null) {
  						domNodeDescription += childDescription;
  					}
  				}
  			}
  		}
  
  		return domNodeDescription;
  	}
docs: Form a DOM node textual representation recursively
  
  @param node
  @param tablevel
  @return