coding预览html,GitHub - zdongcoding/jsouplib: 快速加载html 自动转换bean

AJsoup

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d2d416e64726f69642d79656c6c6f772e737667

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4150492d31342532422d627269676874677265656e2e7376673f7374796c653d666c6174

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2545342542442539432545382538302538352d7a6f75646f6e672d626c75652e737667

AJsoup 模块是快速将html 转换成bean 类似gson转换

使用前提你了解jsoup并且了解jsoup的Select

Gradle

compile 'com.github.zdongcoding:ajsoup:0.1.0'

Maven

com.github.zdongcoding

ajsoup

0.1.0

pom

使用方法如下:

bean.java

@Select(select = "body")

public class HomeBean {

@Select(select = "div > div > div.listbox")

public HotTopTabBean hotTopTabBean; //热门数据

@Select(select = "div#nav > ul > li[id]", attr = "id")

public Map navBeans;

@Select(select = "div#nav-under > ul >li:has(a)") //排除无

public List navUnderBeans;

@Select(select = "div#body > div.left.noborder.clearfix.block1 > ul")

public List latests;

@Select(select = "div#header-in > div > ul#hot-words > li")

public List searchbeans;

}

String html=....;

HomeBean bean=AJsoupReader.deserialize(Jsoup.parse(html), HomeBean.class);

AJsoup---->Converter-Ajsoup

使用过Retrofit 一看这个名字就知道做什么的

Gradle

compile 'com.github.zdongcoding:converter-ajsoup:0.1.0'

Maven

com.github.zdongcoding

converter-ajsoup

0.1.0

pom

使用方法:

Api.java

public interface Api {

@GET("{url}")

Observable getPage(@Path(value = "url",encoded = true) String url);

}

api = new Retrofit.Builder().baseUrl(baseUri)

.addConverterFactory(JsoupConverterFactory.create())

.addConverterFactory(ScalarsConverterFactory.create())

.addCallAdapterFactory(RxJavaCallAdapterFactory.create())

.build().create(Api.class);

api.getPage("").subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber() {

@Override

public void onCompleted() {

}

@Override

public void onError(Throwable e) {

}

@Override

public void onNext(HomeBean homeBean) {

view.setText(homeBean.toString());

}

});

选择器概要(Selector overview)

Tagname:通过标签查找元素(例如:a)

ns|tag:通过标签在命名空间查找元素,例如:fb|name查找fb:name元素

#id:通过ID查找元素,例如#logo

.class:通过类型名称查找元素,例如.masthead

[attribute]:带有属性的元素,例如[href]

[^attr]:带有名称前缀的元素,例如[^data-]查找HTML5带有数据集(dataset)属性的元素

[attr=value]:带有属性值的元素,例如[width=500]

[attr^=value],[attr$=value],[attr*=value]:包含属性且其值以value开头、结尾或包含value的元素,例* 如[href*=/path/]

[attr~=regex]:属性值满足正则表达式的元素,例如img[src~=(?i).(png|jpe?g)]

:所有元素,例如

选择器组合方法

el#id::带有ID的元素ID,例如div#logo

el.class:带类型的元素,例如. div.masthead

el[attr]:包含属性的元素,例如a[href]

任意组合:例如a[href].highlight

ancestor child:继承自某祖(父)元素的子元素,例如.body p查找“body”块下的p元素

parent > child:直接为父元素后代的子元素,例如: div.content > pf查找p元素,body > * 查找body元素的* 直系子元素

siblingA + siblingB:查找由同级元素A前导的同级元素,例如div.head + div

siblingA ~ siblingX:查找同级元素A前导的同级元素X例如h1 ~ p

el, el, el:多个选择器组合,查找匹配任一选择器的唯一元素,例如div.masthead, div.logo

伪选择器(Pseudo selectors)

:lt(n):查找索引值(即DOM树中相对于其父元素的位置)小于n的同级元素,例如td:lt(3)

:gt(n):查找查找索引值大于n的同级元素,例如div p:gt(2)

:eq(n) :查找索引值等于n的同级元素,例如form input:eq(1)

:has(seletor):查找匹配选择器包含元素的元素,例如div:has(p)

:not(selector):查找不匹配选择器的元素,例如div:not(.logo)

:contains(text):查找包含给定文本的元素,大小写铭感,例如p:contains(jsoup)

:containsOwn(text):查找直接包含给定文本的元素

:matches(regex):查找其文本匹配指定的正则表达式的元素,例如div:matches((?i)login)

:matchesOwn(regex):查找其自身文本匹配指定的正则表达式的元素

注意:上述伪选择器是0-基数的,亦即第一个元素索引值为0,第二个元素index为1等

主要用到以上字段

不需要服务器 就可以做一个快速做一个客户端

完毕,就是这么简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值