HTML 解析框架 Fruit-HTML

未知
Java
跨平台
2017-10-23
周其

Fruit

简单的说Fruit之于html正如Gson之于Json,它能让你以一种注解的方式来描述解析的逻辑。下面是一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class FruitInfo {
    @Pick("div#only")
    private String favorite;
    @Pick(value = "div#only", attr = Attrs.OWN_TEXT)
    private String favoriteOne;
    @Pick(value = "div#only", attr = Attrs.HTML)
    private String favoriteHtml;
    @Pick(value = "img.apple", attr = Attrs.SRC)
    private String img;
    @Pick(value = "a.author", attr = Attrs.HREF)
    private String blog;
    @Pick("div.fruit")
    private List<Item> items;

    public static class Item {
        @Pick("strong.name")
        private String name;
        @Pick(".color")
        private String color;
        @Pick(attr = "id")
        private int id;
    }
}

这里就不做更多的说明了,GitHub项目主页有更丰富的使用说明,欢迎访问查看。

V2er

V2er就是开始时说的那个要开发的V2EX客户端。
这个APP的开发是从去年底开始一直到今年9月中旬基本开发完成,到现在也迭代了几个版本,在市场上也获得了很多用户的好评与鼓励平均评分在4.8
欢迎各位朋友去下载使用,在Google Play酷安市场已上架。

前几天也写了个基本版 - V2er-Core把V2er的核心代码开源了。这个小项目完整的展示了如何利用 “Fruit/Retrofit2/OKHttp3/RxJava” 来开发这种APP(数据大部分来源于html及少量json接口)
下面一段代码是最终实现后的Retrofit API Service代码样例(是不是看上去和使用真的Json接口一样)

1
2
3
4
5
6
7
public interface APIs {
    @GET("/api/topics/hot.json") @Json
    Observable<DailyHotInfo> dailyHot();

    @GET("/") @Html
    Observable<NewsInfo> homeNews(@Query("tab") String tab);
}

最后再贴一张V2er-Core实现的效果图:


大家可以去这里找到它的源码。

的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Java8之Lambda表达式的前世今生

java6怎么做?java8又该怎么做?

2016/08/11 07:10
52
0
协变

[Java编程思想学习笔记]() ### 协变 #### 协变与数组 ``` class Fruit {} class Apple extends Fruit {} class Jonathan extends Apple {} class Orange extends Fruit {} public class Cov...

2018/04/16 17:02
10
0
浅析java的泛型通配符

import java.util.ArrayList; import java.util.List; public class TestGeneric { public static void main(String[] args) { List<? extends Fruit> list1 = new ArrayList<Apple>(); //li...

2012/12/27 10:50
307
0
泛型中<? extends T>和<? super T> 区别

泛型中和 区别

2014/10/21 00:46
52
0
工厂模式-之2

使用反射,有效的避免了每添加一个类,都需要修改factory方法 package com.gavin.reflect; interface fruit{ public abstract void eat(); } class Apple implements fruit{ public void ea...

2013/05/06 20:32
24
0
python 类中方法的动态特性

方法添加 class Fruit(object): pass def add(self): print "grow" if __name__ == "__main__" Fruit.grow = add fruit = Fruit() fruit.grow() 方法更新 class Fruit(object): pass def up...

2014/06/02 16:57
288
0
Java基础-枚举Enum

# 枚举Enum ### 特点 - enum是一个特殊的class - enum类的构造函数必须是私有的 - 枚举类可以继承抽象类,实现接口 - switch接受enum值 ### 语法 #### 1. 定义 ```java enum 类名{ 实例1,实...

2016/11/25 09:55
19
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部