通过豆瓣Api,输入ISBN获取图书信息

在本篇文章中,主要是通过豆瓣API实现获取图书信息的小功能。 

一. 豆瓣API能干什么?  
参考链接:[url]http://www.douban.com/service/ [/url] 

豆瓣API是豆瓣为第三方开发人员提供的编程接口。利用豆瓣API,你可以在你的网站或程序中使用豆瓣的数据和功能.目前的豆瓣API支持的功能包括: 

  • 搜索并查看书籍、电影、音乐信息
  • 搜索并查看用户信息,查看用户友邻信息
  • 查看用户收藏
  • 添加、更新、删除用户收藏
  • 查看评论
  • 发布、修改、删除评论
  • 查看、添加、删除用户广播
  • 查看、添加、删除用户日记
  • 搜索并查看、添加、删除活动
  • 查看、添加、删除、回复推荐
... ... 

二. 根据书本ISBN来获取图书信息  
豆瓣API提供了根据ISBN来查询书本信息的服务,链接: 

http://api.douban.com/book/subject/isbn/+ISBN  。如ISBN为  9787308083256 ,我们就可以通过链接(  http://api.douban.com/book/subject/isbn/9787308083256  )获取到下面的信息。 


在这个返回的XML文件中,包含了书籍的诸多信息,如书本的题目,作者,内容摘要,出版日期…等等。 

三. 解析XML来获取书本的详细信息  
3.1写一个豆瓣的书本类  
<span class="keyword" style="font-weight: bold;">import</span> java.io.Serializable;

<span class="keyword" style="font-weight: bold;">public</span> <span class="class" style="color: rgb(68, 85, 136); font-weight: bold;"><span class="keyword" style="color: rgb(51, 51, 51);">class</span> <span class="title">TudouBookInfo</span> <span class="keyword" style="color: rgb(51, 51, 51);">implements</span> <span class="title">Serializable</span> {</span>

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> <span class="keyword" style="font-weight: bold;">static</span> <span class="keyword" style="font-weight: bold;">final</span> <span class="keyword" style="font-weight: bold;">long</span> serialVersionUID = <span class="number" style="color: rgb(0, 153, 153);">2179631010054135058</span>L;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String tags;<span class="comment" style="color: rgb(153, 153, 136); font-style: italic;">//书本标签</span>

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String isbn10;<span class="comment" style="color: rgb(153, 153, 136); font-style: italic;">//10位ISBN</span>
<span class="indent">  </span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String isbn13;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String title;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String pages;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String author;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String price;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String binding;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String publisher;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String pubdate;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String summary;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String imagePath;

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the imagePath
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getImagePath() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> imagePath;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> imagePath
<span class="indent">  </span> *            the imagePath to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setImagePath(String imagePath) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.imagePath = imagePath;
<span class="indent">  </span>}

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> TudouBookInfo() {
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the tags
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getTags() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> tags;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> tags
<span class="indent">  </span> *            the tags to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setTags(String tags) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.tags = tags;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the isbn10
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getIsbn10() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> isbn10;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> isbn10
<span class="indent">  </span> *            the isbn10 to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setIsbn10(String isbn10) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.isbn10 = isbn10;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the isbn13
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getIsbn13() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> isbn13;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> isbn13
<span class="indent">  </span> *            the isbn13 to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setIsbn13(String isbn13) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.isbn13 = isbn13;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the title
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getTitle() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> title;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> title
<span class="indent">  </span> *            the title to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setTitle(String title) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.title = title;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the pages
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getPages() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> pages;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> pages
<span class="indent">  </span> *            the pages to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setPages(String pages) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.pages = pages;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the author
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getAuthor() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> author;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> author
<span class="indent">  </span> *            the author to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setAuthor(String author) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.author = author;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the price
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getPrice() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> price;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> price
<span class="indent">  </span> *            the price to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setPrice(String price) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.price = price;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the binding
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getBinding() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> binding;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> binding
<span class="indent">  </span> *            the binding to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setBinding(String binding) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.binding = binding;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the publisher
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getPublisher() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> publisher;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> publisher
<span class="indent">  </span> *            the publisher to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setPublisher(String publisher) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.publisher = publisher;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the pubdate
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getPubdate() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> pubdate;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> pubdate
<span class="indent">  </span> *            the pubdate to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setPubdate(String pubdate) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.pubdate = pubdate;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the summary
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> String getSummary() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> summary;
<span class="indent">  </span>}

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@param</span> summary
<span class="indent">  </span> *            the summary to set
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> setSummary(String summary) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">this</span>.summary = summary;
<span class="indent">  </span>}

}

3.2写一个XML的解析类  
通过ISBN查询得到的信息以XML格式的形式返回,所以写一个针对此类XML格式解析的类才能得到我们想要的具体的信息(如:标题,作者,简介等等)。 

<span class="keyword" style="font-weight: bold;">import</span> java.io.InputStream;
<span class="keyword" style="font-weight: bold;">import</span> java.util.ArrayList;
<span class="keyword" style="font-weight: bold;">import</span> java.util.List;

<span class="keyword" style="font-weight: bold;">import</span> javax.xml.parsers.SAXParser;
<span class="keyword" style="font-weight: bold;">import</span> javax.xml.parsers.SAXParserFactory;

<span class="keyword" style="font-weight: bold;">import</span> org.xml.sax.Attributes;
<span class="keyword" style="font-weight: bold;">import</span> org.xml.sax.InputSource;
<span class="keyword" style="font-weight: bold;">import</span> org.xml.sax.SAXException;
<span class="keyword" style="font-weight: bold;">import</span> org.xml.sax.XMLReader;
<span class="keyword" style="font-weight: bold;">import</span> org.xml.sax.helpers.DefaultHandler;


<span class="keyword" style="font-weight: bold;">public</span> <span class="class" style="color: rgb(68, 85, 136); font-weight: bold;"><span class="keyword" style="color: rgb(51, 51, 51);">class</span> <span class="title">BookXMLParser</span> <span class="keyword" style="color: rgb(51, 51, 51);">extends</span> <span class="title">DefaultHandler</span> {</span>

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> TudouBookInfo book = <span class="keyword" style="font-weight: bold;">null</span>;

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> <span class="keyword" style="font-weight: bold;">final</span> StringBuilder buff = <span class="keyword" style="font-weight: bold;">new</span> StringBuilder();
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> String attname = <span class="keyword" style="font-weight: bold;">null</span>;
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">private</span> <span class="keyword" style="font-weight: bold;">final</span> List<String> tags = <span class="keyword" style="font-weight: bold;">new</span> ArrayList<String>();

<span class="indent">  </span><span class="javadoc" style="color: rgb(153, 153, 136); font-style: italic;">/**
<span class="indent">  </span> * <span class="javadoctag">@return</span> the book
<span class="indent">  </span> */</span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> TudouBookInfo getBook() {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">return</span> book;
<span class="indent">  </span>}

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> BookXMLParser(InputStream is) {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">try</span> {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>SAXParserFactory spfactory = SAXParserFactory.newInstance();
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>spfactory.setValidating(<span class="keyword" style="font-weight: bold;">false</span>);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>SAXParser saxParser = spfactory.newSAXParser();
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>XMLReader xmlReader = saxParser.getXMLReader();
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>xmlReader.setContentHandler(<span class="keyword" style="font-weight: bold;">this</span>);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>xmlReader.parse(<span class="keyword" style="font-weight: bold;">new</span> InputSource(is));
<span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">catch</span> (Exception e) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>System.err.println(e);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>System.exit(<span class="number" style="color: rgb(0, 153, 153);">1</span>);
<span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span>}

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> startElement(String uri, String localName, String name,
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>Attributes atts) <span class="keyword" style="font-weight: bold;">throws</span> SAXException {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">if</span> (name.equalsIgnoreCase(<span class="string" style="color: rgb(221, 17, 68);">"entry"</span>)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book = <span class="keyword" style="font-weight: bold;">new</span> TudouBookInfo();
<span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (name.equalsIgnoreCase(<span class="string" style="color: rgb(221, 17, 68);">"db:attribute"</span>)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>attname = atts.getValue(<span class="string" style="color: rgb(221, 17, 68);">"name"</span>);
<span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (name.equalsIgnoreCase(<span class="string" style="color: rgb(221, 17, 68);">"db:tag"</span>)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>tags.add(atts.getValue(<span class="string" style="color: rgb(221, 17, 68);">"name"</span>));
<span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (name.equalsIgnoreCase(<span class="string" style="color: rgb(221, 17, 68);">"link"</span>)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"image"</span>.equalsIgnoreCase(atts.getValue(<span class="string" style="color: rgb(221, 17, 68);">"rel"</span>))) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setImagePath(atts.getValue(<span class="string" style="color: rgb(221, 17, 68);">"href"</span>));
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span>buff.setLength(<span class="number" style="color: rgb(0, 153, 153);">0</span>);
<span class="indent">  </span>}

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> endElement(String uri, String localName, String name)
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">throws</span> SAXException {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"entry"</span>.equalsIgnoreCase(name)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>StringBuilder str = <span class="keyword" style="font-weight: bold;">new</span> StringBuilder();
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">for</span> (String t : tags) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>str.append(t + <span class="string" style="color: rgb(221, 17, 68);">"/"</span>);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setTags(str.toString());
<span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (name.equalsIgnoreCase(<span class="string" style="color: rgb(221, 17, 68);">"db:attribute"</span>)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>String value = buff.toString().trim();
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"isbn10"</span>.equalsIgnoreCase(attname)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setIsbn10(value);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"isbn13"</span>.equalsIgnoreCase(attname)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setIsbn13(value);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"title"</span>.equalsIgnoreCase(attname)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setTitle(value);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"pages"</span>.equalsIgnoreCase(attname)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setPages(value);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"author"</span>.equalsIgnoreCase(attname)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setAuthor(value);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"price"</span>.equalsIgnoreCase(attname)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setPrice(value);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"publisher"</span>.equalsIgnoreCase(attname)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setPublisher(value);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"binding"</span>.equalsIgnoreCase(attname)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setBinding(value);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"pubdate"</span>.equalsIgnoreCase(attname)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setPubdate(value);
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span>} <span class="keyword" style="font-weight: bold;">else</span> <span class="keyword" style="font-weight: bold;">if</span> (<span class="string" style="color: rgb(221, 17, 68);">"summary"</span>.equalsIgnoreCase(name)) {
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span>book.setSummary(buff.toString());
<span class="indent">  </span><span class="indent">  </span>}
<span class="indent">  </span><span class="indent">  </span>buff.setLength(<span class="number" style="color: rgb(0, 153, 153);">0</span>);
<span class="indent">  </span>}

<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">void</span> characters(<span class="keyword" style="font-weight: bold;">char</span> ch[], <span class="keyword" style="font-weight: bold;">int</span> start, <span class="keyword" style="font-weight: bold;">int</span> length)
<span class="indent">  </span><span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">throws</span> SAXException {
<span class="indent">  </span><span class="indent">  </span>buff.append(ch, start, length);
<span class="indent">  </span>}

}

3.3最后写一个测试类  
<span class="keyword" style="font-weight: bold;">import</span> java.io.IOException;
<span class="keyword" style="font-weight: bold;">import</span> java.io.InputStream;

<span class="keyword" style="font-weight: bold;">import</span> org.apache.http.HttpEntity;
<span class="keyword" style="font-weight: bold;">import</span> org.apache.http.HttpResponse;
<span class="keyword" style="font-weight: bold;">import</span> org.apache.http.client.ClientProtocolException;
<span class="keyword" style="font-weight: bold;">import</span> org.apache.http.client.methods.HttpGet;
<span class="keyword" style="font-weight: bold;">import</span> org.apache.http.impl.client.DefaultHttpClient;

<span class="keyword" style="font-weight: bold;">public</span> <span class="class" style="color: rgb(68, 85, 136); font-weight: bold;"><span class="keyword" style="color: rgb(51, 51, 51);">class</span> <span class="title">RetrieveDocumentByURL</span> {</span>
<span class="indent">  </span>
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> RetrieveDocumentByURL(String url) <span class="keyword" style="font-weight: bold;">throws</span> ClientProtocolException, IOException{
<span class="indent">  </span><span class="indent">  </span>DefaultHttpClient client = <span class="keyword" style="font-weight: bold;">new</span> DefaultHttpClient();
<span class="indent">  </span><span class="indent">  </span>HttpGet get = <span class="keyword" style="font-weight: bold;">new</span> HttpGet(url);
<span class="indent">  </span><span class="indent">  </span>HttpResponse response = client.execute(get);
        HttpEntity entity = response.getEntity();
        InputStream is = entity.getContent();
        TudouBookInfo book = <span class="keyword" style="font-weight: bold;">new</span> BookXMLParser(is).getBook();
        System.out.println(<span class="string" style="color: rgb(221, 17, 68);">"title:->"</span> + book.getTitle());
        System.out.println(<span class="string" style="color: rgb(221, 17, 68);">"summary:->"</span>+ book.getSummary());
        System.out.println(<span class="string" style="color: rgb(221, 17, 68);">"price:-->"</span> + book.getPrice());
        System.out.println(<span class="string" style="color: rgb(221, 17, 68);">"author:-->"</span> + book.getAuthor());
        System.out.println(<span class="string" style="color: rgb(221, 17, 68);">"ImagePath:-->"</span> + book.getImagePath());
<span class="indent">  </span>}
<span class="indent">  </span><span class="keyword" style="font-weight: bold;">public</span> <span class="keyword" style="font-weight: bold;">static</span> <span class="keyword" style="font-weight: bold;">void</span> main(String[] args) <span class="keyword" style="font-weight: bold;">throws</span> ClientProtocolException, IOException {
<span class="indent">  </span><span class="indent">  </span><span class="keyword" style="font-weight: bold;">new</span> RetrieveDocumentByURL(<span class="string" style="color: rgb(221, 17, 68);">"http://api.douban.com/book/subject/isbn/9787308083256"</span>);
<span class="indent">  </span>}

}

Eclipse工具中设置断点,查看得到的书本具体信息如下图所示: 

控制台输出  : 
title:->马云的颠覆智慧 
summary:->他是“教主”!是极具煽动力的“布道者”!是不走寻常路的企业家! 
在阿里巴巴、淘宝一个个大放异彩的案例中,他如何以颠覆完成超越? 
他自称完全不懂网络,却打造了阿里巴巴帝国,颠覆了中国互联网生态;他演讲激情澎湃,不走寻常路,成为一名孜孜不倦的布道者;他宣称在阿里巴巴,股东的地位在顾客、员工之后,股东却纷纷向他伸出橄榄枝!他如何以颠覆完成超越? 
本书正是从分析马云异于常人的企业运营智慧和理念出发,用清晰地案例和深刻的分析,展现其以颠覆完成超越的独到智慧。 
关于“颠覆”,马云如是说—— 
做任何事,必须要有突破,没有突破,就等于没做。 
——马云在《赢在中国》节目中的点评 
世界永远不缺创新,永远不缺的是借口。 
——2010年马云在IT领袖峰会上的演讲 
今时今日,一场由互联网技术掀起的革命正初露端倪,这股浪潮必将永久改变顾客与企业之间的力量态势。在世界各地,能够把握这些新契机和新趋势的中小型企业必将在竞争中脱颖而出。 
——2009年马云在新加坡APEC中小企业高峰会议的演讲《因小而美》 
假如没有变革,怎么会有中小企业,假如没有变革,我们这些所有垄断的企业,怎么有利益在?所以说不破不立。 
——2008年马云新浪博客文章《呼唤企业家精神 坚持梦想敢于担当》 

蓝海战略是一种颠覆性的思考。 
——2006年马云在浙商大会暨首届浙商投资博览会上的发言 
阿里巴巴进入淘宝,将会颠覆C2C、B2C等概念,而未来两到三年内,阿里巴巴与淘宝也必然走向融合,这是一个大趋势。 
——2005年12月25日上海交通大学安泰管理学院演讲 
price:-->35.00元 
author:-->快刀洪七 
ImagePath:-->http://img3.douban.com/spic/s4644461.jpg 


至此,通过豆瓣提供的API,一个简单的图书信息获取小程序就完成了。 

四.获取图书信息后能做什么呢?  
获取书本信息之后,最简单的应用就可以为自己建立一个图书信息库,实现一个简单的Web应用。比如将得到的书籍信息存入到数据库中,然后以分页的形式将书本信息显示在页面上,最后用户可以点击某个书本,弹出一个框显示详细信息,如下图: 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值