public String getHtmlMeta(String input) throws YadisException { String xrdsLocation = null; HTMLDocumentImpl doc = this.parseDocument(input); if (DEBUG) { try { _log.debug("document:\n" + OpenID4JavaDOMParser.toXmlString(doc)); } catch (TransformerException e) { _log.debug("An exception occurs while transforming the document to string in debugging.", e); } } NodeList heads = doc.getElementsByTagName("head"); if (heads.getLength() != 1) throw new YadisException( "HTML response must have exactly one HEAD element, " + "found " + heads.getLength() + " : " + heads.toString(), OpenIDException.YADIS_HTMLMETA_INVALID_RESPONSE); HTMLHeadElement head = (HTMLHeadElement) doc.getHead(); NodeList metaElements = head.getElementsByTagName("META"); if (metaElements == null || metaElements.getLength() == 0) { if (DEBUG) _log.debug("No <meta> element found under <html><head>. " + "See Yadis specification, section 6.2.5/1."); } else { for (int i = 0, len = metaElements.getLength(); i < len; i++) { HTMLMetaElement metaElement = (HTMLMetaElement) metaElements.item(i); String httpEquiv = metaElement.getHttpEquiv(); if (YadisResolver.YADIS_XRDS_LOCATION.equalsIgnoreCase(httpEquiv)) { if (xrdsLocation != null) throw new YadisException( "More than one " + YadisResolver.YADIS_XRDS_LOCATION + "META tags found in HEAD: " + head.toString(), OpenIDException.YADIS_HTMLMETA_INVALID_RESPONSE); xrdsLocation = metaElement.getContent(); if (DEBUG) _log.debug("Found " + YadisResolver.YADIS_XRDS_LOCATION + " META tags."); } } } return xrdsLocation; }