Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用TagSoup解析XML:长属性bug?_Java_Android_Tag Soup - Fatal编程技术网

Java 用TagSoup解析XML:长属性bug?

Java 用TagSoup解析XML:长属性bug?,java,android,tag-soup,Java,Android,Tag Soup,我试图用TagSoup解析丑陋的HTML,以提取给定标记的值。 这是标签: <input type="hidden" name="hash_check" value="ffc39410ed8da309408a9382450ddc85" /> 此处的日志用于调试目的。Logcat正确地为atts.getValue(“name”)提供了“hash_check”,但为atts.getValue(“value”)提供了一个空字符串,尽管解析器被定位到右侧的“input”(我的html文档中

我试图用TagSoup解析丑陋的HTML,以提取给定标记的值。 这是标签:

<input type="hidden" name="hash_check" value="ffc39410ed8da309408a9382450ddc85" />
此处的日志用于调试目的。Logcat正确地为atts.getValue(“name”)提供了“hash_check”,但为atts.getValue(“value”)提供了一个空字符串,尽管解析器被定位到右侧的“input”(我的html文档中唯一的一个)

怎么了?塔格汤里的虫子

谢谢

编辑@bMail:谢谢你的评论。下面是更多的细节和代码

首先,我试图解析的URL:

以及用于实例化解析器的代码:

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;
    }
}

感谢您尝试一下。

使用
Integer.toString()
就是问题所在。更改此项:

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

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

在修复了解析错误之后,我可以在笔记本电脑上使用Java6上的tagsoup-1.2。更多细节?示例代码?谢谢您的回答。我已经编辑了我的帖子,为你提供更多细节。
Log.v(TAG, atts.getValue("value") );