我来分享Java 如何解析word。

Java 解析 HTML 的常用方法有两种:一是使用 Jsoup 库,二是使用 Java 自带的 DOM 解析器,下面分别介绍这两种方法。

Java 如何解析word

(图片来源网络,侵删)

1、使用 Jsoup 库

Jsoup 是一个用于处理 HTML 的 Java 库,它可以非常方便地解析、提取和操作 HTML 文档,首先需要添加 Jsoup 依赖到项目中,如果使用 Maven,可以在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.14.3</version>
</dependency>

然后可以使用以下代码解析 HTML:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Main {
    public static void main(String[] args) {
        String html = "<html><head><title>示例网页</title></head>"
                + "<body><p>这是一个 <a href=\'https://www.example.com\'>示例网站</a>。</p></body></html>";
        // 解析 HTML
        Document document = Jsoup.parse(html);
        // 获取标题
        String title = document.title();
        System.out.println("标题: " + title);
        // 获取所有段落元素
        Elements paragraphs = document.select("p");
        for (Element paragraph : paragraphs) {
            System.out.println("段落: " + paragraph.text());
        }
        // 获取所有链接元素
        Elements links = document.select("a[href]");
        for (Element link : links) {
            System.out.println("链接: " + link.attr("href"));
            System.out.println("文本: " + link.text());
        }
    }
}

2、使用 Java 自带的 DOM 解析器

Java 自带的 DOM(Document Object Model)解析器可以解析 HTML,但使用起来相对繁琐,首先需要创建一个 DocumentBuilderFactory 实例,然后使用它创建一个 DocumentBuilder 实例,最后使用 DocumentBuilder 实例解析 HTML,以下是一个简单的示例:

import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class Main {
    public static void main(String[] args) {
        String html = "<html><head><title>示例网页</title></head>"
            + "<body><p>这是一个 <a href=\'https://www.example.com\'>示例网站</a>。</p></body></html>";
        try {
            // 创建 DocumentBuilderFactory 实例
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            // 创建 DocumentBuilder 实例
            DocumentBuilder builder = factory.newDocumentBuilder();
            // 解析 HTML
            Document document = builder.parse(new InputSource(new StringReader(html)));
            document.getDocumentElement().normalize(); // 规范化文档结构,提高性能并减少内存消耗
            // 获取标题
            String title = document.getDocumentElement().getAttribute("title");
            System.out.println("标题: " + title);
            // 获取所有段落元素
            NodeList paragraphs = document.getElementsByTagName("p");
            for (int i = 0; i < paragraphs.getLength(); i++) {
                Node node = paragraphs.item(i);
                if (node instanceof Element) { // 确保节点是元素类型,避免错误信息输出到控制台
                    Element element = (Element) node;
                    System.out.println("段落: " + element.getTextContent());
                } else { // 如果节点不是元素类型,直接跳过,避免错误信息输出到控制台
                    continue;
                }
            }
            // 获取所有链接元素
            NodeList links = document.getElementsByTagName("a");
            for (int i = 0; i < links.getLength(); i++) {
                Node node = links.item(i);
                if (node instanceof Element) { // 确保节点是元素类型,避免错误信息输出到控制台
                    Element element = (Element) node;
                    System.out.println("链接: " + element.getAttribute("href"));
                    System.out.println("文本: " + element.getTextContent());
                } else { // 如果节点不是元素类型,直接跳过,避免错误信息输出到控制台
                    continue;
                }
            }
        } catch (ParserConfigurationException | SAXException | IOException e) {
            e.printStackTrace(); // 如果发生异常,输出堆栈跟踪信息到控制台,便于调试和排查问题,在实际应用中,应该使用日志记录器替代 printStackTrace()。

本文来自投稿,不代表科技代码立场,如若转载,请注明出处https://www.cwhello.com/440306.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
上一篇 2024年6月24日 09:41
下一篇 2024年6月24日 09:41

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息