Java 用TagSoup解析XML:长属性bug?
我试图用TagSoup解析丑陋的HTML,以提取给定标记的值。 这是标签: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文档中
<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") );