1

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

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

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

非常に多くのサックスパーサーがあり、それらの違いとどれを選択するかがわかりません。

htmlタグの属性にアクセスしたいのですが、webcrawlerでアクセスできないか、その方法がわかりません。

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

4

1 に答える 1

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

    }

}
于 2010-09-23T13:59:32.560 に答える