Guys:
I'm creating a client for the w3 validator API (basically validates HTML error/warnings of a given URL).
This is the API's URL. If you go here, you'll automatically download an example:
http://validator.w3.org/check?uri=ht...&output=soap12

This is the code I'm using to contact the API and to parse the XML with Digester:

private void runHtmlValidatorProcess() {
Envelope envelope = null;
Digester digester = DigesterBuilder.createDigester();

InputSource inputSource;

try {
inputSource = processWs("http://validator.w3.org/check?uri=http://www.google.com&output=soap12");

envelope = (Envelope)digester.parse(inputSource);
} catch (Exception e) {
e.printStackTrace();
}
}

public HttpClient getHttpClient() {
...
creates and retiurns an HTTP client (with proxy, user, etc.)
...
}

public InputSource processWs(String fullRequest) throws Exception {
GetMethod method = new GetMethod();
method.setURI(new URI(fullRequest, false));
return callWS(method);

}

private InputSource callWS(HttpMethod method) {
InputSource inputSource = null;

try {
while (inputSource == null) {
int executeMethod = getHttpClient().executeMethod(method);
if (executeMethod == HttpStatus.SC_OK) {
inputSource = new InputSource(method.getResponseBodyAsStream());


}
}
}
} catch (Exception e) {
etc
}

return inputSource;
}

createDigester method:
public static Digester createDigester() {
digester.addObjectCreate("Envelope", Envelope.class);
digester.addObjectCreate("Envelope/Body", Body.class);
digester.addObjectCreate("Envelope/Body/markupvalidationresponse", MarkupValidationResponse.class);
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/errors", Errors.class);
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/errors/errorcount", ErrorCount.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/errors/errorcount", "errorCount");
digester.addSetNext("Envelope/Body/markupvalidationresponse/errors/errorcount", "setErrorCount");
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/errors/errorlist", ErrorList.class);
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/errors/errorlist/error", Error.class);
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/errors/errorlist/error/line", Line.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/errors/errorlist/error/line", "line");
digester.addSetNext("Envelope/Body/markupvalidationresponse/errors/errorlist/error/line", "setLine");
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/errors/errorlist/error/col", Col.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/errors/errorlist/error/col", "col");
digester.addSetNext("Envelope/Body/markupvalidationresponse/errors/errorlist/error/col", "setCol");
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/errors/errorlist/error/message", Message.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/errors/errorlist/error/message", "message");
digester.addSetNext("Envelope/Body/markupvalidationresponse/errors/errorlist/error/message", "setMessage");
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/errors/errorlist/error/explanation", Explanation.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/errors/errorlist/error/explanation", "explanation");
digester.addSetNext("Envelope/Body/markupvalidationresponse/errors/errorlist/error/explanation", "setExplanation");
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/errors/errorlist/error/source", Source.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/errors/errorlist/error/source", "source");
digester.addSetNext("Envelope/Body/markupvalidationresponse/errors/errorlist/error/source", "setSource");
digester.addSetNext("Envelope/Body/markupvalidationresponse/errors/errorlist/error", "addError");
digester.addSetNext("Envelope/Body/markupvalidationresponse/errors/errorlist", "setErrorList");
digester.addSetNext("Envelope/Body/markupvalidationresponse/errors", "setErrors");

digester.addObjectCreate("Envelope/Body/markupvalidationresponse/warnings", Warnings.class);
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/warnings/warningcount", WarningCount.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/warnings/warningcount", "warningCount");
digester.addSetNext("Envelope/Body/markupvalidationresponse/warnings/warningcount", "setWarningCount");
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/warnings/warninglist", WarningList.class);
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning", Warning.class);
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/line", Line.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/line", "line");
digester.addSetNext("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/line", "setLine");
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/col", Col.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/col", "col");
digester.addSetNext("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/col", "setCol");
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/message", Message.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/message", "message");
digester.addSetNext("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/message", "setMessage");
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/explanation", Explanation.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/explanation", "explanation");
digester.addSetNext("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/explanation", "setExplanation");
digester.addObjectCreate("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/source", Source.class);
digester.addBeanPropertySetter("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/source", "source");
digester.addSetNext("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning/source", "setSource");
digester.addSetNext("Envelope/Body/markupvalidationresponse/warnings/warninglist/warning", "addWarning");
digester.addSetNext("Envelope/Body/markupvalidationresponse/warnings/warninglist", "setWarningList");
digester.addSetNext("Envelope/Body/markupvalidationresponse/warnings", "setWarnings");
digester.addSetNext("Envelope/Body/markupvalidationresponse", "setMarkupValidationResponse");
digester.addSetNext("Envelope/Body", "setBody");



return digester;
}


PROBLEM
The Envelope object finishes null. After the digester.parse, the object is still null.
I also tried THE SAME code, but using InputStream instead of InputSource and that way I get a "org.xml.sax.SAXParseException: Premature end of file" on digester.parse.

I'm TRULY desparate, my bag of tricks is empty by now.
Please help!


Thanks
-Lucas