使用JSoup在Android中使用某些文本HTML标记后获取某些标记的文本

时间:2014-12-26 13:54:17

标签: android html jsoup

我希望在使用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();
    }

有人可以帮忙吗?

1 个答案:

答案 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伪选择器的参数被解释为正则表达式。