解压缩并按照HTML原本的格式获取文本内容

InputStream inputStream = dto.getFile().getInputStream();

            ZipInputStream zipInputStream = new ZipInputStream(inputStream);
            ZipEntry entry;

            String pageText ="";
            //解压缩
            while ((entry = zipInputStream.getNextEntry()) != null) {
                if (!entry.isDirectory() && entry.getName().equals("report.html")) {
                    // 从ZipInputStream读取数据
                    byte[] buffer = new byte[1024];
                    StringBuilder stringBuilder = new StringBuilder();
                    int length;
                    while ((length = zipInputStream.read(buffer)) > 0) {
                        stringBuilder.append(new String(buffer, 0, length));
                    }

                    // 解析HTML文件
                    String htmlContent = stringBuilder.toString();
                    Document document = Jsoup.parse(htmlContent);
                    pageText = extractTextFromPage(document.body());

                    break; // 找到report.html后退出循环
                }
            }
            if (pageText.length()==0){
                throw new RuntimeException("请正确传递压缩文件!");
            }



    private static String extractTextFromPage(Node node) {
        StringBuilder pageText = new StringBuilder();

        // 提取当前节点的文本内容
        if (node instanceof TextNode) {
            pageText.append(((TextNode) node).text()).append(" ");
        } else if (node instanceof Element) {
            Element element = (Element) node;

            // 如果是段落或者表格单元格,加上换行符
            if (element.tagName().equals("tr")) {
                pageText.append("\n");
            }

            // 处理当前元素的子节点
            for (Node child : element.childNodes()) {
                pageText.append(extractTextFromPage(child));
            }
        }

        return pageText.toString();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值