JSoup查询:如何在另一个标记中查找HTML标记的所有实例

时间:2016-06-07 14:26:06

标签: jsoup

我有一个HTML页面来扫描标题和图形元素。 HTML文件的代码是:

<body>
<section>
    <h2>H2-1</h2>
    <div>
        <section>
            <h3>H3-1</h3>
            <div>
                <figure><img src="Fig 1.png"></figure>
            </div>
        </section>
        <section>
            <h3>H3-2</h3>
            <div></div>
        </section>
    </div>
</section>
<section>
    <h2>H2-2</h2>
    <div>
        <figure><img src="Fig 2.png"></figure>
        <figure><img src="Fig 3.png"></figure>
        <figure><img src="Fig 4.png"></figure>
    </div>
</section>
<section>
    <h2>H2-3</h2>
    <div>
        <figure><img src="Fig 5.png"></figure>
        <section>
            <h3>H3-3</h3>
            <div><figure><img src="Fig 6.png"></figure></div>
        </section>
    </div>
</section>
<section>
    <h2>H2-4</h2>
    <div>
    </div>
</section>
</body>

我想要的输出是:

H2-1
  H3-1
    Fig 1
H2-2
  Fig 2
  Fig 3
  Fig 4
H2-3
  Fig 5
  H3-3
    Fig 6

我想找到显示所有具有子图元素的标题。如果它具有直接子图形元素,我不想显示标题。

我正在尝试的JSoup代码是:

Document doc = Jsoup.parse(sourceCode);
Elements sectionTags = doc.body().getElementsByTag("section");
for (Element sectTag : sectionTags)
{
  System.out.println (sectTag.children().first().ownText());  //print the Heading text 
  Elements figureTags = sectTag.getElementsByTag("figure");
  for (Element figTag : figureTags) 
  {
    System.out.println (figTag.getElementsByTag("img").attr("src").toString());  // print the image name
  }                          
}

但我没有得到所需的输出。我得到的输出是:

H2-1
  Fig 1
  H3-1
    Fig 1
H2-2
  Fig 2
H2-3
  Fig 5
  H3-3
    Fig 6

有任何帮助吗?我是JSoup的新手,感谢任何有用的建议或提示。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你可以试试这个

{{1}}