读取ArrayList的一部分n次行?

时间:2016-01-24 14:43:19

标签: java string arraylist

如果您有一个HTML页面存储在String ArrayList中,并且您想要读取某个类类型的整个<div>标记,那么如何读取下一行以便它到达div的末尾标记

for (String l : line) {
    if (l.contains("<div class=\"somne_class\">"){

      //read the next n strings in ArrayList until </div> tag is reached
}

3 个答案:

答案 0 :(得分:1)

通常,将HTML文件存储为原始字符串列表是个坏主意。为什么要以这种方式存储它?

想象一下,你有<div id="outer_div"><div id=""inner_div>Hei!</div></div>之类的字符串。在这里,您在一行中有多个嵌套的HTML标记,因此您不会轻易获得结束标记。

考虑使用HTML解析器,然后您可以按类型或属性获取所需的标记。 Java中有很多HTML解析器。其中最受欢迎的是jsoup。

答案 1 :(得分:1)

我同意弗拉基米尔,你可能正在寻找 HTML解析器

要回答帖子中的确切问题:要简单地找到下一个</div>标记,您可以使用 for循环而不是 foreach循环

for (int i = 0; i < line.size(); ++i) {
    String l = line.get(i);
    if (l.contains("<div class=\"somne_class\">") {
        for (int j = i; j < line.size(); ++j) {
            String l2 = line.get(j);
            if (l2.contains("</div>")) {
                // l2 is the next line that contains a </div> tag
            }
        }
    }
}

请注意,即使您假设每个标记位于不同的行中,此也可能不是开头标记的匹配结束标记。

答案 2 :(得分:0)

我建议您使用jsoup

  

解析写入html文件很好。尽管我没有   在这里挖掘了很多东西是一个采取所有元素的例子   标记 div

    Document htmlFile = null;
    // Read the html file
    try {
        htmlFile = Jsoup.parse(new File("path"),"UTF-8");//path,encoding
    } catch (IOException e) {
        e.printStackTrace();
    }

    Elements images = htmlFile.getElementsByTag("div");

您可以执行更多阅读here