jsoup select 选择器

“自己”这个东西是看不见的,撞上一些别的什么,反弹回来,才会了解“自己”。

所以,跟很强的东西、可怕的东西、水准很高的东西相碰撞,然后才知道“自己”是什么,这才是自我 。


运行环境

**JDK8 + IntelliJ IDEA 2018.3 **

利用方法

Element.select(String selector)Elements.select(String selector)

jar包文件

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;">https://files.cnblogs.com/files/papercy/jsoup_jar%E5%8C%85.rar</pre>

描述

Jsoup的元素支持类似CSS或(jquery)的选择器语法的查找匹配的元素,可实现功能强大且鲁棒性好的查询。

Select方法可作用于DocumentElements或Element,且是上下文相关的,因此可实现指定元素的过滤,或者链式选择访问。

以下共介绍使用十种方法获取 xml元素

XML代码

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;"><?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="1">
<name>feifeiye</name>
<age>19</age>
<sex>nv</sex>
</student>
<student id="2" class="two">
<name>papercy</name>
<age id="3" text-color="red" >19</age>
<sex>nan</sex>
</student>
</students></pre>

JAVA代码实现

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;">public static void main(String[] args) { /获取document文档,反射path/ String path=JsoupDemo1.class.getClassLoader().getResource("Students.xml").getPath(); try {
Document document = Jsoup.parse(new File(path),"utf-8"); /获取elements/element/ Elements element=document.getAllElements();

       System.out.println("element:"+element);

} catch (IOException e) {
e.printStackTrace();
}
}</pre>

选择器使用

  • 使用 * 选择器

    <pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;"> Elements elements = document.select("*");

           System.out.println("element * 号选择器:"+elements);        </pre>
    
  • <pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;">使用class 选择器</pre>

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;"> Elements elements1 = document.select(".two");
System.out.println("element class 选择器:"+elements1);</pre>

  • 使用ID 选择器

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;"> Elements element1 = document.select("#1");
System.out.println("element1 id 选择器:"+element1);</pre>

  • 使用 Tag 选择器

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;">Elements elements2 = document.select("name");
System.out.println("eleemnts2 tag 选择器:"+elements2);</pre>

  • 使用 [attribute]: 利用属性

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;"> Elements elements3 = document.select("[text-color]");

System.out.println("elements3 [attribute] 选择器:"+elements3);</pre>

  • 使用 [^attr=value] : 利用属性值

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;"> Elements elements4 = document.select("[text-color=red]");

System.out.println("elements4 [^attr=value] 选择器:"+elements4);

</pre>

  • 使用 parent > child : 查找某个父元素下的直接子元素

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;"> Elements elements5 = document.select("student>sex");
System.out.println("element5 parent > child 选择器 :"+elements5);</pre>

  • 使用 ancestor child : (查找某个元素下子元素)

  • Elements element2 = document.select("students name"); System.out.println("element2 ancestor child 选择器:"+element2);

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

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;"> Elements element3 = document.select("name:contains(feifeiye)");

System.out.println("element3 containsOwn(text)选择器:"+element3);</pre>

  • 使用 eq(n): 查找哪些元素的同级索引值与n相等

<pre style="color: rgb(0, 0, 0); font-family: "Courier New"; font-size: 12px; margin: 5px 8px; padding: 5px;"> Elements elements6 = document.select("student age:eq(1)");

System.out.println("elements6 eq(n)选择器:"+elements6);</pre>


心得

希望本无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,走的人多了,也便成了路。

很多东西,只有花时间去做了,才能有个成功与否,站着看的永远比走的慢。或许看上去很厉害,很难的东西,你去实践的时候会发现没有想象中的难。

会不会是取决你做了没做,而不是想了没想。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容