jsoup怎么获取两个标签之间的text?
要处理的html
import com.easestrategy.ws.model.WsHtml;
import org.elasticsearch.client.transport.TransportClient;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.nodes.TextNode;
import org.jsoup.select.Elements;
import java.lang.reflect.Field;
import java.util.List;
/**
* Created by cmyuan on 2018/9/30
*/
public class Test {
private static TransportClient client;
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
/* client = new ElasticsearchConfig().getElasticsearchClient();
System.out.println(client.listedNodes());
try {
ElasticSearchUtil.createIndex();
} catch (IOException e) {
e.printStackTrace();
}*/
String html = "<a type='dir' name='WBSB'></a><div style='TEXT-ALIGN: center; LINE-HEIGHT: 25pt; MARGIN: 0.5pt 0cm; FONT-FAMILY: 宋体; FONT-SIZE: 22pt;'>浙江省遂昌县人民法院</div><div style='TEXT-ALIGN: center; LINE-HEIGHT: 30pt; MARGIN: 0.5pt 0cm; FONT-FAMILY: 仿宋; FONT-SIZE: 26pt;'>刑 事 判 决 书</div><div style='TEXT-ALIGN: right; LINE-HEIGHT: 30pt; MARGIN: 0.5pt 0cm; FONT-FAMILY: 仿宋;FONT-SIZE: 16pt; '>(2012)丽遂刑初字第205号</div><a type='dir' name='DSRXX'></a><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>公诉机关遂昌县人民检察院。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>被告人金菊英,女,1977年10月17日出生于浙江省遂昌县,汉族,初中文化,农民,户籍地遂昌县妙高街道(原妙高镇)枫树坪村陈坑12号。因本案于2012年6月25日被遂昌县*局刑事拘留,同年6月27日变更为取保候审。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>被告人朱某,男,1970年6月29日出生于浙江省遂昌县,汉族,初中文化,居民,户籍地遂昌县妙高街道西街75号。因本案于2012年6月25日被遂昌县*局取保候审。</div><a type='dir' name='SSJL'></a><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>遂昌县人民检察院以遂检刑诉(2012)201号起诉书指控被告人金菊英、朱某犯信用卡诈骗罪,于2012年10月31日向本院提起公诉。本院依法适用简易程序,实行独任审判,公开开庭审理了本案。遂昌县人民检察院指派代理检察员杨松出庭支持公诉,被告人金菊英、朱某等到庭参加了诉讼。现已审理终结。</div><a type='dir' name='AJJBQK'></a><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>公诉机关指控:</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>2011年3月24日,被告人金菊英、朱某(系夫妻关系)共同到中国农业银行股份有限公司遂昌县支行分别申请了一张信用卡,其中被告人金菊英申领的信用卡卡号为×××2070,被告人朱某申领的信用卡卡号为×××5029。2011年4月,被告人金菊英、朱某从该银行领取了各自的信用卡。嗣后,被告人朱某将其本人信用卡交由被告人金菊英使用。2011年8月24日,被告人金菊英分别从其申领的信用卡及被告人朱某申领的信用卡中透支人民币9950元、15250元(上述账户之前结余本金分别为246.91元、386.95元)。其后,该发卡银行在规定透支期限届满后,通过电话、催收通知书、报刊公告等方式多次向被告人金菊英、朱某催收透支款,但被告人金菊英、朱某在被催收两次后且超过3个月仍未归还透支款。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>2012年4月17日,被告人朱某归还其本人信用卡中透支款人民币2400元;2012年5月3日,被告人金菊英归还其本人信用卡中透支款人民币1000元。至案发,被告人金菊英、朱某的信用卡中仍有透支款本金分别为人民币8703.09元、12463.05元(利息及滞纳金分别为人民币2174.25元、3266.88元)。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>2012年6月25日,被告人金菊英、朱某在其租住房内被遂昌警方抓获。归案后,被告人金菊英、朱某如实供述了上述犯罪事实;案发后,被告人金菊英、朱某向中国农业银行股份有限公司遂昌支行还清了透支款本息共计人民币26580.27元。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>上述事实,被告人金菊英、朱某在开庭审理过程中亦无异议,并有证人李某的证言;关于要求对金菊英、朱某信用卡恶意透支行为予以立案的报告;办理信用卡的申请资料、工作单位证明材料、被告人金菊英、朱某的身份证复印件;金融许可证、法定代表人身份证明书及身份证复印件、交易信息、催款通知书、催收基本资料(账户级)、催收账户交易历史记录、催收备忘历史信息、ems国内特快专递邮件详情单、信用卡逾期催收公告、中国农业银行浙江省分行信用卡透支信函催收清单、催收资料详细信息;扣押物品、文件清单、№0005794232浙江省预收(暂扣)款票据、还款证明;抓获经过;被告人金菊英、朱某的户籍证明等证据证实,足以认定。</div><a type='dir' name='CPYZ'></a><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>本院认为,被告人金菊英、朱某以非法占有为目的,利用信用卡恶意透支,其中被告人金菊英恶意透支本金人民币21139.14元,数额较大;被告人朱某恶意透支本金人民币12463.05元,数额较大,二被告人的行为均已构成信用卡诈骗罪。公诉机关指控的罪名成立。被告人朱某在共同犯罪中起辅助作用,系从犯,应从轻处罚。被告人金菊英、朱某归案后如实供述了自己的罪行,并当庭自愿认罪,可从轻处罚;已还清了透支款本息,可酌情从轻处罚。为此,依照《*刑法》第一百九十六条第一款第(四)项、第二款、第二十七条、第六十七条第三款、第七十二条、第五十二条之规定,判决如下:</div><a type='dir' name='PJJG'></a><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>一、被告人金菊英犯信用卡诈骗罪,判处有期徒刑一年二个月,缓刑二年,并处罚金人民币20000元(缓刑考验期从判决执行之日起计算)。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>二、被告人朱某犯信用卡诈骗罪,判处有期徒刑六个月,缓刑一年,并处罚金人民币20000元(缓刑考验期从判决执行之日起计算)。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>罚金限判决生效后一个月内缴纳。</div><div style='LINE-HEIGHT: 25pt;TEXT-ALIGN:justify;TEXT-JUSTIFY:inter-ideograph; TEXT-INDENT: 30pt; MARGIN: 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>如不服本判决,可在接到判决书的第二日起十日内,通过本院或者直接向浙江省丽水市中级人民法院提出上诉。书面上诉的,应当提交上诉状正本一份,副本二份。</div><a type='dir' name='WBWB'></a><div style='TEXT-ALIGN: right; LINE-HEIGHT: 25pt; MARGIN: 0.5pt 72pt 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>审 判 员 秦金芽</div><br/><div style='TEXT-ALIGN: right; LINE-HEIGHT: 25pt; MARGIN: 0.5pt 72pt 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>二〇一二年十一月七日</div><div style='TEXT-ALIGN: right; LINE-HEIGHT: 25pt; MARGIN: 0.5pt 72pt 0.5pt 0cm;FONT-FAMILY: 仿宋; FONT-SIZE: 16pt;'>代书记员 蓝 利</div>\n" +
"\n" +
"\n";
Document document = Jsoup.parse(html);
Element body = document.body();
Elements allElements = body.select("body>*");
Elements flagElements = body.getElementsByTag("a");
WsHtml wsHtml = new WsHtml();
for (int i = 0; i < flagElements.size(); i++) {
Element element = flagElements.get(i);
int crtFlagIndex = element.elementSiblingIndex();
if (crtFlagIndex == 0) {
continue;
}
StringBuffer sb = new StringBuffer();
Element preElement = flagElements.get(i - 1);
int preFlagIndex = preElement.siblingIndex();
String name = preElement.attr("name").toLowerCase();
for (int j = 0; j < allElements.size(); j++) {
int eleIndex = allElements.get(j).siblingIndex();
//获取上一个的index
if (eleIndex <= preFlagIndex) {
continue;
}
if (eleIndex >= crtFlagIndex) {
setProperty(wsHtml, name, sb.toString());
//如果为最后一条标志,其后续还有序号,则需要把后面的数据全部导入
if (i == flagElements.size() - 1 && crtFlagIndex < allElements.size() - 1) {
StringBuffer lastSb = new StringBuffer();
for (int k = crtFlagIndex + 1; k < allElements.size(); k++) {
lastSb.append(allElements.get(k).text());
}
String lastName = element.attr("name").toLowerCase();
setProperty(wsHtml, name, lastSb.toString());
}
break;
}
sb.append(allElements.get(j).text());
}
}
//获取到的结果
System.out.println(wsHtml);
}
public static void setProperty(Object obj, String PropertyName, Object value)
throws NoSuchFieldException, SecurityException,
IllegalArgumentException, IllegalAccessException {
// 获取obj类的字节文件对象
Class c = obj.getClass();
// 获取该类的成员变量
Field f = c.getDeclaredField(PropertyName);
// 取消语言访问检查
f.setAccessible(true);
// 给变量赋值
f.set(obj, value);
}
}
实体类
package com.easestrategy.ws.model;
/**
* Created by cmyuan on 2018/10/11
* 文书html中各个模块的解析
*/
public class WsHtml {
/**
* 文本首部
*/
private String wbsb;
/**
* 当事人信息
*/
private String dsrxx;
/**
* 实时记录
*/
private String ssjl;
/**
* 按键基本情况
*/
private String ajjbqk;
/**
* 裁判要旨
*/
private String cpyz;
/**
* 判决结果
*/
private String pjjg;
/**
* 文本尾部
*/
private String wbwb;
public String getWbsb() {
return wbsb;
}
public void setWbsb(String wbsb) {
this.wbsb = wbsb;
}
public String getDsrxx() {
return dsrxx;
}
public void setDsrxx(String dsrxx) {
this.dsrxx = dsrxx;
}
public String getSsjl() {
return ssjl;
}
public void setSsjl(String ssjl) {
this.ssjl = ssjl;
}
public String getAjjbqk() {
return ajjbqk;
}
public void setAjjbqk(String ajjbqk) {
this.ajjbqk = ajjbqk;
}
public String getCpyz() {
return cpyz;
}
public void setCpyz(String cpyz) {
this.cpyz = cpyz;
}
public String getPjjg() {
return pjjg;
}
public void setPjjg(String pjjg) {
this.pjjg = pjjg;
}
public String getWbwb() {
return wbwb;
}
public void setWbwb(String wbwb) {
this.wbwb = wbwb;
}
}