Разбор XML с TagSoup: ошибка с длинными атрибутами?

1

Я пытаюсь разобрать уродливый HTML с помощью 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( "значение" ), хотя синтаксический анализатор помещается в правый "enter" (один и только из моего 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;
    }
}

Спасибо, что попробовали.

  • 0
    После исправления ошибок синтаксического анализа, он работает для меня, используя tagoup-1.2 на Java 6 на моем ноутбуке. Подробнее? Образец кода?
  • 0
    Спасибо за ваш ответ. Я отредактировал свой пост, чтобы дать вам больше деталей.
Теги:
tag-soup

1 ответ

0

Использование Integer.toString() - проблема. Измените это:

Log.v(TAG, Integer.toString(atts.getValue("value")));

:

Log.v(TAG, atts.getValue("value") );

Ещё вопросы

Сообщество Overcoder
Наверх
Меню