code: public static String getMergedNestedText(Node n) {
          StringBuilder sb = new StringBuilder();
          for (Node child : new IterableNodeList(n.getChildNodes())) {
              if (child instanceof Text || child instanceof CDATASection) {
                  String s = child.getNodeValue();
                  if (s != null) {
                      sb.append(s);
                  }
              }
          }
          return sb.toString();
      }
docs: Tries to merge all direct Text and CDATA children of the given
  Node and concatenates their value.
  
  @return an empty string if the Node has no Text or CDATA
  children.