如何区分具有相同标记名和相同文本的两个HTML元素

时间:2013-04-20 05:24:43

标签: html html-parsing jsoup

我想知道Jsoup中是否有任何方法告诉我具有相同标记名称的元素,文本和类(如果有)与具有相同标记名称,文本和相同类(如果有)的其他元素不同。有关说明,请考虑以下HTML代码段:

<html>
<body>
<div>Here I Am</div><div>First Time</div>
<div>Here I Am</div><div>Again</div>
</body>
</html>

现在在上面的代码中我如何用div标签和文本这里我是来分隔这两个元素。另请注意,这里的两个元素没有id。

以上示例非常简单,但实际情况可能更复杂。所以,如果你建议我一个普遍的答案,我将非常感激。谢谢。

4 个答案:

答案 0 :(得分:1)

提供id以使其对文档唯一。这可以作为

完成
<div id="first">Here I Am</div>
<div id="second">Here I Am</div>

答案 1 :(得分:1)

在DOM和XPath的概念下,这些节点除了规范顺序外是相同的。如果要访问此模式的第n个节点,

//div[text()='Here I Am'][n]

其中 n 从0开始。

答案 2 :(得分:1)

获取所有div元素并选择所需内容。

示例

Document doc = Jsoup.parse("<html>\n" +
        "<body>\n" +
        "<div>Here I Am</div><div>First Time</div>\n" +
        "<div>Here I Am</div><div>Again</div>\n" +
        "</body>\n" +
        "</html>");

Element div = doc.select("div").first();

System.out.println(div.html());

<强>输出

Here I Am

其他元素可通过索引访问。

示例

Element div = doc.select("div").get(3);

<强>输出

Again

答案 3 :(得分:0)

你可以识别div。例如,您可以这样做:

<div class="div1"><h2>Here I Am</h2></div>

     <div class="div2"><h2>First Time</h2></div>

<div class="div3"><h2>Here I Am</h2></div>

     <div class="div4"><h2>Again</h2></div>