使用Java从文件中提取所有HTML标记(包括结束标记),而不使用像Jsoup这样的外部库

时间:2014-12-08 19:21:40

标签: java html regex file-io

我有这个代码,它将接收HTML文件,获取所有打开的HTML标记,然后打印它们。我想知道是否有办法在此代码中包含结束标记。所以现在它打印出来:

<html>
<head>
<title>
<body>
<table>
<p>
<a>
<p>
etc. etc.

我也希望用封闭标签进行打印。

<p>
<a>
</a>
</p>

这是我到目前为止的代码:

        try {
        BufferedReader in = new BufferedReader(new FileReader("test.html"));
        String line;
        StringBuilder stringBuilder = new StringBuilder();
        while ((line = in.readLine()) != null) {
            stringBuilder.append(line);
        }
        String pageContent = stringBuilder.toString();
        Pattern pattern = Pattern.compile("<(?!!)(?!/)\\s*([a-zA-Z0-9]+)(.*?)>");
        Matcher matcher = pattern.matcher(pageContent);
        while (matcher.find()) {
            String tagName = matcher.group(1);
            System.out.println("<" + tagName + ">");
        }
        in.close();
    }

编辑:有没有办法不使用像Jsoup这样的外部库? 编辑2:我将我的Pattern.compile改为this-&gt; &LT; |(?*)([A-ZA-Z0-9] + / [A-ZA-Z0-9] +)&GT;它起作用了。感谢。

1 个答案:

答案 0 :(得分:1)

如果可以使用外部库,可以按照此处的说明使用JSoup。 Extract Tags from a html file using Jsoup