1


0

saxとwebcrawlerを使用したサイトマップ

みなさん、こんにちは、これが私の最初の質問であり、プログラマーではありません。

サイトマップを生成したいと思います。 webcrawler(crawler.dev.java.net)でWebサイトをクロールしています。 取得したデータにサックスパーサーを使用する方法はありますか?

私もjtidyを使用し、ホームページのhtmlデータをxmlファイルに変換しました。

非常に多くのサックスパーサーが存在するので非常に混乱しているため、それらの違いとどちらを選択するかはわかりません。

私はhtmlタグの属性にアクセスしたいのですが、webcrawlerでそれを行うことはできませんか、それを行う方法がわかりません

org.xml.saxと他のすべてのパッケージの違いは何ですか?

1 Answer


0


Javaは、JAXPを介してSAXパーサーと対話する標準的な方法を提供します(以下のコードを参照)。 通常、SAXパーサーを切り替えるには、クラスパスにパーサーjarを追加するだけでコードは変わりません。

次のようにサックス解析を実行できます。

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

    }

}