1
我試圖用TagSoup解析醜陋的HTML來提取給定標記的值。 這裏是標籤:用TagSoup解析XML:長屬性的bug?
<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正確地爲atts.getValue(「name」)提供了「hash_check」,但是爲atts.getValue(「value」)提供了一個空字符串,儘管解析器被定位到正確的「輸入」(我的html文檔中唯一一個)。
怎麼了? TagSoup中的錯誤?
謝謝
編輯@bkail:感謝您的評論。這裏有更多的細節和代碼。
首先,我試圖解析的網址: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。更多細節?示例代碼? – 2010-08-29 16:55:52
謝謝你的回答。我編輯了我的帖子,給你更多的細節。 – Harkonnen 2010-08-30 08:05:22