在 Java 專家 Michael Geisler 為 Builder 澳大利亞寫的第一篇文章中,他向讀者展示了如何使用 JTidy 將 HTML 文件轉換成 XML。
有關 Java 的最重要的事情是有很多擴展標準庫可以作為標準平臺的一部分,而且在那些庫中有對 XML 提供了非常多的支持。然而對于某些特定的需要,在標準庫中可能沒有直接的支持。
其實你有兩個選擇:
完全由自己來構建一些東西。這一般很痛苦,而且很費時間。 去“社區”看看是否已經有人遇到了同樣的問題(這種情況非常有可能發生),看他是否樂意與你分享他的成果。 對于這個情況,SourceForge 上有一個非常有用的小項目,叫做 JTidy。JTidy 的Web 站點位于 http://sourceforge.net/projects/jtidy/。
JTidy 提供 HTML 語法檢查和 HTML 的“pretty printing(漂亮打印)”,但是對于你來說,它還允許你將一個 HTML 文件作為輸入,然后將其轉換成為 XML。JTidy 讀取輸入文件,然后如果發現有任何不匹配或遺漏的閉合標記,將糾正這些標記,最后輸出一個格式良好的 XML 文檔。
從下面的示例代碼中可以看到,JTidy 的用法相當簡單。簡單地將 JTidy 實例設置為輸出 XML,提供一個輸入 URL,輸出文件和錯誤文件,然后啟動轉換過程就可以了。
import java.net.URL; import java.io.*; import org.w3c.tidy.Tidy;
public class TestHTML2XML { private String url; private String outFileName; private String errOutFileName;
public TestHTML2XML(String url, String outFileName, String errOutFileName) { this.url = url; this.outFileName = outFileName; this.errOutFileName = errOutFileName; }
public void convert() { URL u; BufferedInputStream in; FileOutputStream out;
Tidy tidy = new Tidy();
//Tell Tidy to convert HTML to XML tidy.setXmlOut(true);
try { //Set file for error messages tidy.setErrout(new PrintWriter(new FileWriter(errOutFileName), true)); u = new URL(url);
//Create input and output streams in = new BufferedInputStream(u.openStream()); out = new FileOutputStream(outFileName);
//Convert files tidy.parse(in, out);
//Clean up in.close(); out.close();
} catch (IOException e) { System.out.println(this.toString() + e.toString()); } }
public static void main(String[] args) { /* * Parameters are: * URL of HTML file * Filename of output file * Filename of error file */ TestHTML2XML t = new TestHTML2XML(args[0], args[1], args[2]); t.convert(); } }
|