我希望在使用JSoup的HTML中的某些文本标记之后获取某些标记的文本,如下所示:
<td>AAA</td>
<td>1111</td>
<td>BBB</td>
<td>2222</td>
如果选择AAA,我想打印1111,如果选择BBB,则打印2222
我试过这个,但没有在文本字段中打印出来:
@Override
protected Void doInBackground(Void... params) {
try {
// Connect to the web site
Document document = Jsoup.connect(url).get();
// Using Elements to get the Meta data
Elements description = document
.select("td [value=AAA] td");
// Locate the content attribute
desc= description.text();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// Set description into TextView
TextView txtdesc = (TextView) findViewById(R.id.desctxt);
txtdesc.setText(desc);
mProgressDialog.dismiss();
}
有人可以帮忙吗?
答案 0 :(得分:0)
您的选择器会选择一个td
中的所有td
s ,其中包含名为&#34; value&#34;的属性价值&#34; AAA&#34;。
相反,您必须匹配td标记的内容。有一个伪选择器matchesOwn
可用于此目的。 (自己的意思是,只匹配元素的直接文本,而不是任何孩子的直接文本。)
然后,前进到下一个兄弟元素(或者,如果在感兴趣的td之前可能有另一个元素,则使用&#34; td&#34;再次查询作为选择器)。
尝试
Element description = document.select("td:matchesOwn("AAA")).first().nextElementSibling();
请注意,matchesOwn
伪选择器的参数被解释为正则表达式。