Я пытаюсь разобрать уродливый HTML с помощью TagSoup для извлечения значения данного тега. Вот тег:Анализ XML с помощью TagSoup: ошибка с длинными атрибутами?
<input type="hidden" name="hash_check" value="ffc39410ed8da309408a9382450ddc85" />
Я хочу, чтобы получить значение атрибута "значение" ("ffc39410ed8da309408a9382450ddc85")
А вот мой код в моем SAX обработчика:
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException
{
if (localName.equals("input"))
{
Log.v(TAG, Integer.toString(atts.getLength()));
if (atts.getValue("name").equals("hash_check")
{
in_input = true;
Log.v(TAG, atts.getValue("name"));
if (atts.getValue("value") != null)
Log.v(TAG,atts.getValue("value");
}
}
}
Журналы здесь для целей отладки. Logcat правильно дает мне «hash_check» для atts.getValue («name»), но пустую строку для atts.getValue («значение»), хотя синтаксический анализатор помещается в правый «ввод» (один и только из моего html-документа).
Что случилось? Ошибка в TagSoup?
Благодаря
редактировать @bkail: спасибо за ваш комментарий. Вот более подробная информация и код.
Во-первых, URL, который я пытаюсь разобрать: http://forum.hardware.fr/hfr/Programmation/Divers-6/experts-puissant-internet-sujet_37483_1.htm
И код, используемый для анализатору создании экземпляра:
private static final String FORUM_URI = "http://forum.hardware.fr/hfr/Programmation/Divers-6/experts-puissant-internet-sujet_37483_1.htm";
URL hfrUrl = new URL(FORUM_URI);
Parser parser = new Parser();
HfrSAXHandler sh = new HfrSAXHandler();
parser.setContentHandler(sh);
parser.parse(new InputSource(hfrUrl.openStream()));
И, наконец, весь код для моего SAX парсера:
public class HfrSAXHandler extends DefaultHandler
{
private boolean in_input = false;
private static final String TAG = "hfr4droid";
@Override
public void startDocument() throws SAXException
{
Log.v(TAG, "start of parsing");
}
@Override
public void endDocument() throws SAXException
{
}
@Override
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException
{
if (localName.equals("input"))
{
Log.v(TAG, Integer.toString(atts.getLength()));
if (atts.getValue("name") != null)
{
in_input = true;
Log.v(TAG, atts.getValue("name"));
if (atts.getValue("value") != null)
Log.v(TAG, Integer.toString(atts.getValue("value")));
}
}
}
@Override
public void endElement(String namespaceURI, String localName, String qName) throws SAXException
{
if (localName.equals("input"))
in_input = false;
}
}
Спасибо, что попробовали.
После исправления ошибок синтаксического анализа, это работает для меня, используя TagSoup-1.2 на Java 6 на моем ноутбуке. Подробнее? Образец кода? –
Спасибо за ваш ответ. Я редактировал свой пост, чтобы дать вам более подробную информацию. – Harkonnen