2013-10-21 253 views
0

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

我曾尝试下面的代码:

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) { 

     } 
    } 
} 
} 

但它不是按预期工作

+0

你的意思是XHTML?那么这个Javascript代码怎么样,你想要做什么? – GolezTrol

+0

我必须将普通html文件转换为xml – suresh

+0

您是否需要将它们转换为* XHTML? XHTML是HTML的XML表示。 '只要'XML可以是任何东西。 – GolezTrol

回答

1

尝试jTidy

JTidy可以作为一种工具用于清理格式错误和错误的HTML

+0

可以使用jTidy共享示例代码来完成这项工作 – suresh

+0

非常感谢,我能够做到这一点。 – suresh

0

HTML与XML不同,除非它符合XML模式下的XHTML或HTML5。

建议使用HTML解析器来读取HTML并将其转换为XML - 或直接处理它。