2010-09-19 93 views
1

大家好,這是我的第一個問題,我不是程序員。使用sax和webcrawler的網站地圖

我想生成一個網站地圖。我使用webcrawler(crawler.dev.java.net)來爬取網站。 有沒有什麼辦法可以使用薩克斯解析器來獲取我得到的數據?

我也用jtidy和我得到了在xml文件中轉換的主頁html數據。

即時通訊非常困惑,有這麼多薩克斯解析器,idont知道他們之間的區別和選擇哪一個。

我想訪問HTML標籤的屬性,我不能做到這一點與WebCrawler的或我不知道如何做到這一點

請告訴我org.xml.sax中和所有其他包之間的區別嗎?

回答

0

Java提供了一種通過JAXP與SAX解析器進行交互的標準方式(請參閱下面的代碼)。要在SAX解析器之間切換,通常只需將解析器jar添加到類路徑中,代碼保持不變。

你可以做SAX解析如下:

import javax.xml.parsers.SAXParser; 
import javax.xml.parsers.SAXParserFactory; 

import org.xml.sax.Attributes; 
import org.xml.sax.ContentHandler; 
import org.xml.sax.Locator; 
import org.xml.sax.SAXException; 
import org.xml.sax.XMLReader; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     SAXParserFactory spf = SAXParserFactory.newInstance(); 
     SAXParser sp = spf.newSAXParser(); 
     XMLReader xmlReader = sp.getXMLReader(); 
     xmlReader.setContentHandler(new MyContentHandler()); 
     xmlReader.parse(input); 

    } 

    private static class MyContentHandler implements ContentHandler { 

     public void setDocumentLocator(Locator locator) { 
     } 

     public void startDocument() throws SAXException { 
     } 

     public void endDocument() throws SAXException { 
     } 

     public void startPrefixMapping(String prefix, String uri) 
       throws SAXException { 
     } 

     public void endPrefixMapping(String prefix) throws SAXException { 
     } 

     public void startElement(String uri, String localName, String qName, 
       Attributes atts) throws SAXException { 
     } 

     public void endElement(String uri, String localName, String qName) 
       throws SAXException { 
     } 

     public void characters(char[] ch, int start, int length) 
       throws SAXException { 
     } 

     public void ignorableWhitespace(char[] ch, int start, int length) 
       throws SAXException { 
     } 

     public void processingInstruction(String target, String data) 
       throws SAXException { 
     } 

     public void skippedEntity(String name) throws SAXException { 
     } 

    } 

}