java - 使用java将html转换为xml

标签 java html xml jtidy

任何人都可以建议我一种使用 java 将 html 转换为 xml 的最佳方法吗 有可用的 API 吗? html 还可能包含 javascript 代码

我尝试过以下代码:

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import java.io.IOException;

class HTML2XML {
    public static void main(String args[]) throws JDOMException {
    InputStream isInHtml = null;
    URL url = null;
    URLConnection connection = null;
    DataInputStream disInHtml = null;
    FileOutputStream fosOutHtml = null;
    FileWriter fwOutXml = null;
    FileReader frInHtml = null;
    BufferedWriter bwOutXml = null;
    BufferedReader brInHtml = null;
    try {
        // url = new URL("www.climb.co.jp");
        // connection = url.openConnection();
        // isInHtml = connection.getInputStream();

        frInHtml = new FileReader("D:\\Second.html");
        brInHtml = new BufferedReader(frInHtml);
        SAXBuilder saxBuilder = new SAXBuilder(
                "org.ccil.cowan.tagsoup.Parser", false);
        org.jdom.Document jdomDocument = saxBuilder.build(brInHtml);

        XMLOutputter outputter = new XMLOutputter();
        org.jdom.output.Format newFormat = outputter.getFormat();
        String encoding = "iso-8859-2";
        newFormat.setEncoding(encoding);
        outputter.setFormat(newFormat);

        try {
            outputter.output(jdomDocument, System.out);
            fwOutXml = new FileWriter("D:\\Second.xml");
            bwOutXml = new BufferedWriter(fwOutXml);
            outputter.output(jdomDocument, bwOutXml);
            System.out.flush();
        } catch (IOException e) {
        }

    } catch (IOException e) {
    } finally {
        System.out.flush();
        try {
            isInHtml.close();
            disInHtml.close();
            fosOutHtml.flush();
            fosOutHtml.getFD().sync();
            fosOutHtml.close();
            fwOutXml.flush();
            fwOutXml.close();
            bwOutXml.close();
        } catch (Exception w) {

        }
    }
}
}

但它没有按预期工作

最佳答案

尝试jTidy

JTidy can be used as a tool for cleaning up malformed and faulty HTML

关于java - 使用java将html转换为xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19489882/

相关文章:

java - 请告知我无法创建名称为 "con"的组的原因

javascript - 当用户单击“提交”时,有没有办法将值从按钮传递到表单?

html - 在 HTML 中放置 SVG 内容的最佳方式

java - 正确使用反向引用和捕获组的 Java 正则表达式是什么

java - JButton 子类在重绘期间具有自定义形状变化

java - Wicket 口出现问题

javascript - 附加结果中的反引号在 IE 浏览器中不起作用

python - 如何使用带有 python 的正则表达式从 XML 文件中删除多个空格和字符?

java - "java.lang.OutOfMemoryError: Java heap space"在 xml 文件上调用 FileUtils.readFileToString 时

css - 仔细粘贴背景图片