code: public static void nodeWalker(NodeList childNodes, NodeElementParser parser) throws ParseException {
          for (int i = 0; i < childNodes.getLength(); i++) {
              Node item = childNodes.item(i);
              String node = item.getNodeName();
              if(item.getNodeType() == Node.ELEMENT_NODE){
                  parser.parse(item);
              }
              nodeWalker(item.getChildNodes(), parser);
          }
      }
docs: nodeWalker walker implementation, simple depth first recursive implementation
  @param childNodes take a node list to iterate
  @param parser an observer which parses a node element
  @throws ParseException