Разбор элементов внутри элементов в jsoup? - PullRequest
4 голосов
/ 23 января 2012

Недавно начал программировать Android Java (Eclipse), я пытаюсь создать простое приложение для чтения с использованием jsoup.

Я получил HTML-код, подобный этому;

<article id="id" class="artikel">
<h1>Title</h1>
<p>paragraph 1</p>
<p>paragraph 2</p>
<p>paragraph 3</p>
</article>

<article id="id">
<p>comment1</p>
</article>

<article id="id">
<p>comment2</p>
</article>

Количество абзацев является переменным.Количество комментариев также.Я хочу получить все параграфы в статье, ни один из комментариев.Настоящая статья всегда является первым тегом статьи, поэтому я использую first () в сочетании с подстановочным знаком, чтобы получить его.

Вот метод, который я использую;

public String GetArticleBody(Document adoc)
{
    //Document totalbody = (Document)adoc.select("article *").first();
    //Element totalbody = adoc.select("article *").first();
    //Elements paragraphs = adoc.select("article * > p);
    Elements paragraphs = adoc.select(".article* p");
    String body = "test";
    for (Element p : paragraphs)
    {
        body = StringAttacher(body, p.text());
    }
    System.out.println(body);
    return body;
}

Как вы можетевидите, я дурачился с методами из кулинарной книги и несколькими, которые я нашел на SOF.Из всех этих методов все, что я когда-либо получал, это всего лишь проверка слова или вообще ничего.

Может ли кто-нибудь указать мне правильное направление, чтобы получить эти абзацы?

1 Ответ

2 голосов
/ 23 января 2012

Проблема, с которой вы столкнулись, заключается в использовании неверного селектора в вашем первом утверждении.

. - это селектор "класса", так что вы либо неправильно написали "article", либо у вас есть ., когдаВы не должны.

Попробуйте вместо этого:

public String GetArticleBody(Document adoc)
{
    //Document totalbody = (Document)adoc.select("article *").first();
    //Element totalbody = adoc.select("article *").first();
    //Elements paragraphs = adoc.select("article * > p);
    Elements paragraphs = adoc.select("article").first().select("p");
    String body = "test";
    for (Element p : paragraphs)
    {
        body = StringAttacher(body, p.text());
    }
    System.out.println(body);
    return body;
}

Это даст вам параграфы в первой статье.

Кроме того, часто помогает помнить, чтоСелекторы jsoup такие же, как те, что используются в селекторах CSS (и подмножестве селекторов jQuery).Любые знания, полученные в этих областях, можно использовать непосредственно с jsoup.

...