android pull解析豆瓣图书xml

< ? xml version = " 1.0 " encoding = " UTF-8 " ? >
< entry xmlns = " http://www.w3.org/2005/Atom "
xmlns : gd = " http://schemas.google.com/g/2005 "
xmlns : opensearch = " http://a9.com/-/spec/opensearchrss/1.0/ "
xmlns : db = " http://www.douban.com/xmlns/ " >
< category scheme = " http://www.douban.com/2007#kind "
term = " http://www.douban.com/2007#book " / >
< db : tag count = " 20 " name = " 片山恭一 " / >
< db : tag count = " 14 " name = " 日本 " / >
< db : tag count = " 10 " name = " 小说 " / >
< db : tag count = " 8 " name = " 日本文学 " / >
< db : tag count = " 4 " name = " 爱情 " / >
< title > 满月之夜白鲸现 < / title >
< author >
< name > (日)片山恭一 < / name >
< / author >
< content >
冷静地想一想吧!公寓的一个房间里只有两上人,连被褥都铺好了,理应是犯
错误的时候,我为什么却这么拘谨?一直胆小的毛病又犯了。事到如今,不要
说上床,就连接吻也还差得很远。这就是横亘在男人和女人之间的又深又暗的
河流吗?
如果有可能,我希望把手伸进她的心里,把她内心所有的东西都掏出来。她对
我究竟是一种什么感觉呢?我在她的心昊确实占有一席之地吗?抑或只是她生
命中的匆匆过客?
< / content >
< link rel = " self " href = " http://api.douban.com/book/subject/1220562 " / >
< link rel = " alternate " href = " http://book.douban.com/subject/1220562/ " / >
< link rel = " image " href = " http://t.douban.com/spic/s1747553.jpg " / >
< db : attribute name = " author " > (日)片山恭一 < / db : attribute >
< db : attribute name = " isbn10 " > 7543632608 < / db : attribute >
< db : attribute name = " isbn13 " > 9787543632608 < / db : attribute >
< db : attribute name = " pages " > 180 < / db : attribute >
< db : attribute name = " tranlator " > 豫人 < / db : attribute >
< db : attribute name = " price " > 18 . 00 < / db : attribute >
< db : attribute name = " publisher " > 青岛出版社 < / db : attribute >
< db : attribute name = " binding " > 平装 ( 无盘 ) < / db : attribute >
< db : attribute name = " author-intro " >
片山恭一,1959年生于日本爱媛县,九州大学农学系农业经济学专业毕业。
学生时代通读了包括夏目漱石和大江健三郎在内的日本近现代文学全集,
同时读了笛卡尔、莱布尼茨到结构主义的欧洲近现代哲学。也读了马克思。
学士论文写的是马克思,硕士论文写的是恩格斯。二十二三岁开始创作小说。
代表作有《在世界中心呼唤爱》、《世界在你不知道的地方运转》、《气息》、
《别相信约翰·列侬》、《满月之夜白鲸现》、《空镜头》以及新作
《倘若我在彼岸》、《雨天的海豚们》等。
< / db : attribute >
< id > http : // api.douban.com/book/subject/1220562</id>
< gd : rating min = " 1 " numRaters = " 39 " average = " 3.69 " max = " 5 " / >
< / entry >
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

private String getBookInfo(InputStream inputStream)
throws XmlPullParserException, IOException {

/*有关XML解析的初始化操作*/
//newInstance()方法用于实例化一个PullParserFactory对象,以便于创建XML解析器
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//指定由XmlPullParserFactory对象产生的解析器能提供对XML命名空间的支持
factory.setNamespaceAware(true);
//用当前的XmlPullParserFactory实例化一个XmlPullParser对象
XmlPullParser parser = factory.newPullParser();
//为解析器输入源,这里的源inputStream是豆瓣返回的XML文件流
parser.setInput(inputStream, "UTF-8");
/*有关XML解析的初始化操作*/

StringBuilder titleBuilder = new StringBuilder();
StringBuilder authorBuilder = new StringBuilder();
StringBuilder publisherBuilder = new StringBuilder();
StringBuilder priceBuilder = new StringBuilder();
StringBuilder pagesBuilder = new StringBuilder();
StringBuilder isbn13Builder = new StringBuilder();

// PULL解析XML的过程:
// 读取到xml的声明返回 START_DOCUMENT;
// 读取到xml的结束返回 END_DOCUMENT ;
// 读取到xml的开始标签返回 START_TAG
// 读取到xml的结束标签返回 END_TAG
// 读取到xml的文本返回 TEXT
// parser.next()是在以上的事件中循环。
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.START_TAG:
// if ( parser.getName().equals("name") ) { parser.next(); authorBuilder.append(parser.getText()); }
//第一个if,当读到开始标签时,判断开始标签是否为title
//如果是,则parse指向下一个事件,即该标签的文本值TEXT,读取该值
if ( parser.getName().equals("title") ) {
parser.next();
titleBuilder.append(parser.getText());
} elseif ( parser.getName().equals("attribute") ) { //是否是attribute标签,如果是,再判断是何种属性
if( parser.getAttributeValue(0).equals("author") ) {
parser.next();
authorBuilder.append(parser.getText());
} elseif ( parser.getAttributeValue(0).equals("publisher") ) {
parser.next();
publisherBuilder.append(parser.getText());
} elseif ( parser.getAttributeValue(0).equals("price") ) {
parser.next();
priceBuilder.append(parser.getText());
} elseif ( parser.getAttributeValue(0).equals("pages") ) {
parser.next();
pagesBuilder.append(parser.getText());
} elseif ( parser.getAttributeValue(0).equals("isbn13") ) {
parser.next();
isbn13Builder.append(parser.getText());
}
}//end else if ( parser.getName().equals("attribute") )
break;
case XmlPullParser.END_TAG:
break;
default:
break;
}//end switch
eventType = parser.next();
}//end while
return titleBuilder.toString();//只返回了书名
}

更多相关文章

  1. Android(java)学习笔记129:Tab标签的使用
  2. 关于xml文件中的一些常用标签的意义
  3. android Manifest.xml全局配置文件中根标签中package属性及标签
  4. Android支持HTML标签
  5. activity 标签总结1
  6. 在RelativeLayout布局中可以设置标签的android:layout_toLeftO..
  7. TabHost自定义标签页(二)
  8. Android开发中的drawable文件:shape、layer-list和selector标签

随机推荐

  1. android: 后台执行的定时任务
  2. Android实现本地手机数据库存储数据最简
  3. Android(安卓)Project : FXiami 虾米音乐
  4. Android(安卓)ListView 去除边缘阴影、选
  5. android 导入、创建文件到sdcard报错:Fail
  6. 第四章 Android开发三大基石—Activity、
  7. 如何避免Android内存泄漏 .
  8. 都在说EventBus,我也来一波EventBus
  9. Android学习心得——序言
  10. Android新语言Kotlin