要通过 XPath 提取 HTML 文本中的表格数据,可以使用 Java 的 XPath 库来实现。以下是一个示例代码,演示如何使用 Java 的 XPath 库和 HTML Parser 库来提取 HTML 文本中的表格数据。

首先,需要导入相关的库文件,包括 HTML Parser 和 Java 的 XPath 库。

import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.TableTag;
import org.htmlparser.util.NodeList;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

接下来,可以编写一个方法来提取 HTML 文本中的表格数据。该方法接受 HTML 文本作为输入,并返回一个二维数组,其中包含了表格数据。

public String[][] extractTableData(String html) throws Exception {
    // 使用 HTML Parser 库解析 HTML 文本
    Parser parser = new Parser(html);
    
    // 使用 TagNameFilter 过滤器选择表格标签
    TagNameFilter filter = new TagNameFilter('table');
    NodeList nodeList = parser.extractAllNodesThatMatch(filter);
    
    // 创建 XPath 对象
    XPath xpath = XPathFactory.newInstance().newXPath();
    
    // 创建 XPath 表达式,用于选择表格的所有行和列
    XPathExpression rowExpr = xpath.compile('//tr');
    XPathExpression colExpr = xpath.compile('td');
    
    // 创建二维数组,用于存储表格数据
    String[][] tableData = new String[nodeList.size()][];
    
    // 遍历表格节点
    for (int i = 0; i < nodeList.size(); i++) {
        TableTag table = (TableTag) nodeList.elementAt(i);
        NodeList rowList = (NodeList) rowExpr.evaluate(table, XPathConstants.NODESET);
        
        // 创建一维数组,用于存储当前行的数据
        String[] rowData = new String[rowList.size()];
        
        // 遍历行节点
        for (int j = 0; j < rowList.size(); j++) {
            Node row = rowList.elementAt(j);
            NodeList colList = (NodeList) colExpr.evaluate(row, XPathConstants.NODESET);
            
            // 创建 StringBuilder 对象,用于存储当前行的所有列数据
            StringBuilder colData = new StringBuilder();
            
            // 遍历列节点
            for (int k = 0; k < colList.size(); k++) {
                Node col = colList.elementAt(k);
                colData.append(col.toPlainTextString().trim());
                
                // 如果不是最后一列,则添加制表符
                if (k < colList.size() - 1) {
                    colData.append('	');
                }
            }
            
            // 将当前列数据添加到当前行数据
            rowData[j] = colData.toString();
        }
        
        // 将当前行数据添加到表格数据
        tableData[i] = rowData;
    }
    
    return tableData;
}

使用上述方法可以提取 HTML 文本中的表格数据,并将其存储在一个二维数组中。可以根据需要进一步处理这些数据。

String html = '<table><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr></table>';
String[][] tableData = extractTableData(html);

// 打印表格数据
for (String[] row : tableData) {
    for (String col : row) {
        System.out.print(col + '	');
    }
    System.out.println();
}

上述代码将输出如下结果:

1	2	
3	4

这是提取的 HTML 文本中的表格数据。

Java 使用 XPath 提取 HTML 表格数据

原文地址: https://www.cveoy.top/t/topic/qmX8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录