java - 在 JAVA 中如何确定 HTML 文档的格式是否正确?

标签 java html-parsing well-formed non-well-formed

嘿伙计们,我需要确定给定的 HTML 文档是否格式良好。
我只需要一个仅使用 Java 核心 API 类的简单实现,即没有像 JTIDY 之类的第三方东西。谢谢。

实际上,我们真正需要的是一个扫描TAGS列表的算法。如果它找到一个开放标签,并且下一个标签不是其相应的关闭标签,那么它应该是另一个开放标签,而该标签又应该将其关闭标签作为下一个标签,如果没有,它应该是另一个开放标签,然后接下来是其相应的关闭标签,以及列表中下一个以相反顺序排列的前一个打开标签的关闭标签。我已经编写了将标签转换为结束标签的方法。如果列表符合此顺序,则返回 true,否则返回 false。

这是我已经开始工作的框架代码。它不是太简洁,但它应该让你们对我正在尝试做的事情有一个基本的了解。

public boolean validateHtml(){

    ArrayList<String> tags = fetchTags();
    //fetchTags returns this [<html>, <head>, <title>, </title>, </head>, <body>, <h1>, </h1>, </body>, </html>]

    //I create another ArrayList to store tags that I haven't found its corresponding close tag yet
    ArrayList<String> unclosedTags = new ArrayList<String>();

    String temp;

    for (int i = 0; i < tags.size(); i++) {

        temp = tags.get(i);

        if(!tags.get(i+1).equals(TagOperations.convertToCloseTag(tags.get(i)))){
            unclosedTags.add(tags.get(i));
            if(){

            }

        }else{
            return true;//well formed html
        }
    }

    return true;
}

最佳答案

是的,字符串操作有时看起来像一个泡菜, 你需要做类似的事情

首先将html复制到数组中

bool tag = false;
string str = "";
List<string> htmlTags = new List();

for(int i = 0; i < array.length; i++)
{ 
  //Check for the start of a tag
  if(array[i] == '<')
  {
    tag == true;
  }

  //If the current char is part of a tag start copying
  if(tag)
  {
    str += char;
  }

  //When a tag ends add the tag to your tag list
  if(array[i] == '>')
  {
    htmlTags.Add(str);
    str = "";
    tag == false;
  }
}

这样的东西应该让你开始,你应该最终得到一个标签数组,这只是伪代码,所以它不应该编译

关于java - 在 JAVA 中如何确定 HTML 文档的格式是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5154618/

相关文章:

java - android - 静态方法的问题

java - java中的自然返回类型是什么?

xml - 使用 JAXB 验证模式

java - 如何使用复选框列表在struts 2中获取多个复选框值

java - 从初学者到掌握一门新语言(Java)的最有效方法

php - 使用 PHP 简单 HTML DOM 解析器获取 Google 应用程序状态

php - 动态更改 html 表格以在移动设备上显示

javascript - 在不发送 HTTP 请求的情况下使用 documentFragment 解析 HTML

java sax 解析格式不正确的 xml

java - 标记必须格式正确