用Java打印DOM树?

时间:2014-09-14 12:10:31

标签: java html dom jsoup

我使用Jsoup库构建了一个解析算法。有没有办法用Java打印DOM树?

例如:

<HTML/>
  <HEAD/>
    <TITLE/>
  <BODY/>
    <H1/>
    <H2/>
    <P/>

2 个答案:

答案 0 :(得分:1)

这是解析和打印的代码。

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletResponse;

import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Main {

  public static void printTree(Node doc) {
    if (doc == null) {
      System.out.println("Nothing to print!!");
      return;
    }
    try {
      System.out.println(doc.getNodeName() + "  " + doc.getNodeValue());
      NamedNodeMap cl = doc.getAttributes();
      for (int i = 0; i < cl.getLength(); i++) {
        Node node = cl.item(i);
        /*
        System.out.println("\t" + node.getNodeName() + " ->" + node.getNodeValue());
        //You don't need value
        */
        System.out.println("\t" + node.getNodeName());
      }
      NodeList nl = doc.getChildNodes();
      for (int i = 0; i < nl.getLength(); i++) {
        Node node = nl.item(i);
        printTree(node);
      }
    } catch (Throwable e) {
      System.out.println("Cannot print!! " + e.getMessage());
    }
  }

}

来源:edited the code given here

答案 1 :(得分:0)

感谢您的回答,但我决定从HTML文件中删除所有纯文本并将其转换为XML。