android xml pull 解析 豆瓣书籍

通过解析豆瓣图书XML,获取书名、作者、出版社、价格、页数、ISBN等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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> 










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()); 
                } else if ( parser.getName().equals("attribute") ) { //是否是attribute标签,如果是,再判断是何种属性 
                    if( parser.getAttributeValue(0).equals("author") ) { 
                        parser.next(); 
                        authorBuilder.append(parser.getText()); 
                    } else if ( parser.getAttributeValue(0).equals("publisher") ) { 
                        parser.next(); 
                        publisherBuilder.append(parser.getText()); 
                    } else if ( parser.getAttributeValue(0).equals("price") ) { 
                        parser.next(); 
                        priceBuilder.append(parser.getText()); 
                    } else if ( parser.getAttributeValue(0).equals("pages") ) { 
                        parser.next(); 
                        pagesBuilder.append(parser.getText()); 
                    } else if ( 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();//只返回了书名 
    } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值