code: public void endElement(String tag) {
          if ( "value".equals(tag) ) {
              StringBuilder fName = new StringBuilder();
              for (int k = 0; k < fieldNames.size(); ++k) {
                  fName.append(".").append((String)fieldNames.elementAt(k));
              }
              if (fName.charAt(0) == '.') {
              	fName.deleteCharAt(0);
              }
              String fNameString = fName.toString();
              String fVal = (String) fieldValues.pop();
              String old = (String) fields.put( fNameString, fVal );
              if (old != null) {
              	List l = (List) listFields.get(fNameString);
              	if (l == null) {
              		l = new ArrayList();
              		l.add(old);
              	}
              	l.add(fVal);
              	listFields.put(fNameString, l);
              }
          }
          else if ("field".equals(tag)) {
              if (!fieldNames.isEmpty()) {
                  fieldNames.pop();
              }
          }
      }
docs: Called when an end tag is found.
  @param tag the tag name