⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queryexample2.java

📁 google的gdata api包
💻 JAVA
字号:
/* Copyright (c) 2006 Google Inc.                                                                                                                                                                                 *                                                                                                                                                                                                                * Licensed under the Apache License, Version 2.0 (the "License");                                                                                                                                                * you may not use this file except in compliance with the License.                                                                                                                                               * You may obtain a copy of the License at                                                                                                                                                                        *                                                                                                                                                                                                                *     http://www.apache.org/licenses/LICENSE-2.0                                                                                                                                                                 *                                                                                                                                                                                                                * Unless required by applicable law or agreed to in writing, software                                                                                                                                            * distributed under the License is distributed on an "AS IS" BASIS,                                                                                                                                              * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.                                                                                                                                       * See the License for the specific language governing permissions and                                                                                                                                            * limitations under the License.                                                                                                                                                                                 */package com.google.api.gbase.examples.basic;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.Stack;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;/** *  Display the titles of the Google Base items that match a specific query.  */public class QueryExample2 {  /**   * Url of the Google Base data API snippet feed.   */  private static final String SNIPPETS_FEED = "http://base.google.com/base/feeds/snippets";  /**   * The query that is sent over to the Google Base data API server.   */  private static final String QUERY = "cars [item type : products]";  /**   * Insert here the developer key obtained for an "installed application" at   * http://code.google.com/apis/base/signup.html   */  private static final String DEVELOPER_KEY = "";  /**   * Create a <code>QueryExample2</code> instance and   * call <code>displayItems</code>.    */  public static void main(String[] args) throws IOException, SAXException,          ParserConfigurationException {    new QueryExample2().displayItems();  }    /**   * Connect to the Google Base data API server, retrieve the items that match   * <code>QUERY</code> and call <code>DisplayTitlesHandler</code> to extract   * and display the titles from the XML response.   */  public void displayItems() throws IOException, SAXException,          ParserConfigurationException {    /*     * Create a URL object, open an Http connection on it and get the input     * stream that reads the Http response.     */    URL url = new URL(SNIPPETS_FEED + "?bq=" +         URLEncoder.encode(QUERY, "UTF-8") + "&key=" + DEVELOPER_KEY);    HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();    InputStream inputStream = httpConnection.getInputStream();    /*     * Create a SAX XML parser and pass in the input stream to the parser.     * The parser will use DisplayTitleHandler to extract the titles from the      * XML stream.      */    SAXParserFactory factory = SAXParserFactory.newInstance();    SAXParser parser = factory.newSAXParser();    parser.parse(inputStream, new DisplayTitlesHandler());  }  /**   * Simple SAX event handler, which prints out the titles of all entries in the    * Atom response feed.    */  private static class DisplayTitlesHandler extends DefaultHandler {    /**     * Stack containing the opening XML tags of the response.     */    private Stack<String> xmlTags = new Stack<String>();         /**     * Counter that keeps track of the currently parsed item.     */    private int itemNo = 0;        /**     * True if we are inside of a data entry's title, false otherwise.     */    private boolean insideEntryTitle = false;        /**     * Receive notification of an opening XML tag: push the tag to      * <code>xmlTags</code>. If the tag is a title tag inside an entry tag,      * turn <code>insideEntryTitle</code> to <code>true</code>.     */    @Override    public void startElement(String uri, String localName, String qName,        Attributes attributes) throws SAXException {      if (qName.equals("title") && xmlTags.peek().equals("entry")) {        insideEntryTitle = true;        System.out.print("Item " + ++itemNo + ": ");      }       xmlTags.push(qName);    }        /**     * Receive notification of a closing XML tag: remove the tag from teh stack.     * If we were inside of an entry's title, turn <code>insideEntryTitle</code>     * to <code>false</code>.     */    @Override    public void endElement(String uri, String localName, String qName)        throws SAXException {      // If a "title" element is closed, we start a new line, to prepare      // printing the new title.      xmlTags.pop();      if (insideEntryTitle) {        insideEntryTitle = false;        System.out.println();      }    }        /**     * Callback method for receiving notification of character data inside an     * XML element.      */    @Override    public void characters(char[] ch, int start, int length)        throws SAXException {      // display the character data if the opening tag is "title" and its parent is       // "entry"      if (insideEntryTitle) {        System.out.print(new String(ch, start, length));      }    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -