小编a22*_*sin的帖子

使用Java将HTML转换为树

所以我试图编写一个程序,它将包含简单HTML语法的文件放入一个树中,该树将显示标签的层次结构.最终,每个叶子将包含一个标签(即p,h,ul等)和文本.这很简单,我打算使用Jtree来显示最终输出.但是,我遇到的困难是通过语法并使用标记构建初始树而不会丢失关系.我认为整个文件将是一个长字符串.该程序将找到一个'<',其中第二个字符不是'/',并考虑一个新的标签/叶子.然后代码将继续并检查下一组字符,以查看是否有另一个'<'表示子标记.如果在'<'之后的第二个字符中找到'/',则代码将移动到同一级别的下一个叶子.

希望你能得到我想要做的事情,不幸的是,我的尝试不太成功,因为它只显示了根标签的子节点.目前,我只是试图让标签在树中工作,文本和我以后不能弄清楚的.为了测试代码,我使用了一个"test"包含一些基本示例html代码的字符串,每个节点都在创建jtree时显示在根目录中,但node2中的子节点从不显示.我很困惑,不能在这周围饶舌.另外,有更简单/有效的方法吗?

**编辑:所以我修改了使用JSoup工作的代码.我设法让它工作,但是,我有一个问题,由于某种原因,除了标签的第一个子标签之外的所有head标签都被移动了body.所以现在body有3个孩子而不是1个,head只有一个而不是三个.另外,我如何修改getChildren()递归函数以适应前一个子节点中的每个子图层?例如,要在h3标记内获取title标记?

package weboqltree_converter;

import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultMutableTreeNode;
import java.util.ArrayList;
import java.awt.Dimension;
import java.util.List;
import javax.swing.tree.TreeNode;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Node;

public class GUI extends JFrame
{
    private JTree tree;
    private String test = "<html>"
            +   "<head>"
            +       "<title><h3>First parse<h3></title>"
            +       "<a></a>"
            +       "<h3></h3>"
            +   "</head>"
            +   "<body>"
            +       "<p>Parsed HTML into a doc.</p>"
            +   "</body>"
            + "</html>"; …
Run Code Online (Sandbox Code Playgroud)

html java arrays tree parsing

3
推荐指数
1
解决办法
1388
查看次数

标签 统计

arrays ×1

html ×1

java ×1

parsing ×1

tree ×1