import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
import org.w3c.tidy.Tidy;
public class HTML2XML {
private String url;
private String outFileName;
private String errOutFileName;
public HTML2XML(String url, String outFileName, String errOutFileName){
this.url = url;//提供一個輸入的URL
this.outFileName = outFileName;//輸出文件
this.errOutFileName = errOutFileName;//錯誤文件
}
public static void main(String[] args){
//參數:HTML文件的UTL,輸出文件和錯誤文件名
System.out.println("程序開始運行……");
HTML2XML t = new HTML2XML("http://hswebuat01/maximo/help.html",
"c:\\temp\\html2xml.xml","c:\\temp\\err.txt");
t.convert();
System.out.println("程序運行結束……");
}
public void convert(){
URL u;
BufferedInputStream in;
FileOutputStream out;
Tidy tidy = new Tidy();
tidy.setXmlOut(true);//告訴Tidy將HTML轉換成XML
try{
tidy.setErrout(new PrintWriter(new FileWriter(errOutFileName),true));//將錯誤信息保存到文件中
u = new URL(url);
in = new BufferedInputStream(u.openStream());//創建一個輸入輸出流
out = new FileOutputStream(outFileName);
tidy.parse(in, out);//轉換文件
in.close();
out.close();
}catch(IOException e){
System.out.println(this.toString()+e.toString());
}
}
}
要点:
(1)BufferedInputStream()的应用
(2)java扩展标准库org.w3c.tidy.Tidy的使用
(3)URL的使用
注意:
该程序中用到的org.w3c.tidy包在http://sourceforge.net/projects/jtidy/下载。解压后引用build文件夹中的tidy包就ok了。
下面是解决转换过程中的乱码问题:
首先将源网页用UTF-8重新编码放到一个新的文件,
还要注意加上:
tidy.setInputEncoding("UTF-8");
才能正确显示
源代码如下:
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.io.*;
import org.w3c.tidy.Tidy;
public class xml {
private String url;
private String outFileName;
private String errOutFileName;
public xml(String url, String outFileName, String
errOutFileName) {
this.url = url;
this.outFileName = outFileName;
this.errOutFileName = errOutFileName;
}
public void convert() {
URL u;
BufferedInputStream in;
FileOutputStream out;
Logger log = Logger.getLogger("convert");
try {
u = new URL(url);
//Create input and output streams
in = new BufferedInputStream(u.openStream()); // 打开文件,转换为 UTF-8 编码
InputStreamReader isr = new InputStreamReader(in, "GB2312"); // 源文件编码为 gb2312
File tmpNewFile = File.createTempFile("GB2312",".html"); // 转换后的文件,设定编码为 utf-8
out = new FileOutputStream( tmpNewFile ); // 需要将文件转换为字符流
OutputStreamWriter osw = new OutputStreamWriter( out , "UTF-8"); // 指定目标编码为 utf-8
osw.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
char[] buffer = new char[10240]; // 文件缓冲区
int len = 0; // 使用字符读取方式,循环读取源文件内容
while( (len = isr.read(buffer)) !=-1 ) // 转换后写入目标文件中
{
osw.write( buffer, 0, len);
}
osw.close(); // 转换完成
isr.close();
out.close();
in.close();
if( log.isLoggable( Level.INFO)){
log.info("HTML 文档转 UTF-8 编码完成!");
}
//设置tidy
Tidy tidy = new Tidy();
// Set file for error messages
tidy.setErrout(new PrintWriter(new FileWriter(errOutFileName), true));
// Tell Tidy to convert HTML to XML
tidy.setXmlOut(true);
tidy.setInputEncoding("UTF-8");
FileInputStream in0 = new FileInputStream( tmpNewFile );
FileOutputStream out0 = new FileOutputStream(outFileName);
//Convert files
tidy.parse(in0, out0);
//Clean up
in.close();
out.close();
tmpNewFile.delete(); // 删除临时文件
} 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
*/
String u="http://www.baidu.com/";
String o="index.xml";
String e="error.xml";
xml t = new xml(u, o, e);
t.convert();
System.out.println("OK!");
}
}
相关推荐
本代码实现了将一个html文件转成xml文件
XML 转换为 HTML 是一种常见的数据转换方式,通过使用 XSL(Extensible Stylesheet Language)语言,对 XML 文件进行变换,生成 HTML 文件。在本实验中,我们将学习如何使用 XSL 对 XML 文件进行变换,生成 HTML ...
这个“XML文件批量转换CSV文件工具”是一款便捷的应用程序,设计用于将XML格式的数据转换成CSV(Comma Separated Values)格式。CSV是一种通用的、轻量级的文件格式,适合于导入和导出到各种数据分析和电子表格软件...
将这个`<link>`标签添加到HTML文件(如a.htm)的`<head>`部分,就可以应用XSL转换规则来美化XML数据的显示。 总结一下,纯HTML静态调用XML文件并利用XSL进行显示修饰的流程包括: 1. 使用`<object>`或`<iframe>`...
### HTML转换为XML的...虽然转换过程中可能存在一些小的错误,但是最终生成的XML文件仍然能够被浏览器正确解析并展示,同时也能够被DOM等工具解析处理。这样的转换对于需要将HTML文档标准化处理的应用场景非常有用。
为了解决这一问题,我们引入了一款高效的工具——XmlNotepad v2.5,它能快速将大数据量的字符串转换成XML格式,大大提升了工作效率。 XmlNotepad是由Microsoft开发的一款轻量级的XML编辑器,它具有直观的用户界面和...
本话题主要涉及的是如何将HTTP文件转换为XML文件。HTTP(超文本传输协议)主要用于Web通信,而XML(可扩展标记语言)则是一种结构化数据表示方式,常用于数据交换和存储。下面将详细阐述这一过程,以及VC(Visual ...
Java XML、XSL 和 HTML 文件转换技术详解 本文档主要讲解了 Java 中的 XML、XSL 和 HTML 文件转换技术。通过对 Java 代码的分析,我们可以了解到如何将 XML 文件转换为 HTML 文件,并了解到 XSL 模板的应用。 首先...
最后,我们将使用 JavaScript 语言来将 XML 文档和 XSLT 文件加载到 HTML 文档中,并将其转换成 HTML 文档。 <html> 使用 XSLT 实现 XML 文档到 HTML 文档的转换 function xslt(){ var XMLdocument1 = new ...
标题和描述中提到的"实现word文件转换成html文件实现在线打开预览word文件",这是一个关于将Microsoft Word文档转换为HTML格式,以便在网页上预览的技术问题。下面将详细介绍这个过程涉及的关键知识点。 1. **...
5. **转换输出**:最后,将所有元素组合成HTML或XML文件,输出结果。 在实际操作中,可能会遇到一些挑战,如PDF质量参差不齐,文本识别不准确,图像嵌入困难,以及复杂的布局转换问题。解决这些问题可能需要对PDF...
可以使用XSLT编写一个样式表来转换这个XML文件: ```xml <html> <h2>Bookstore <h3><xsl:value-of select="title"/> <p>By <xsl:value-of select="author"/></p> <p>Published in ...
例如,如果你想要将名为"myAnimation.swf"的文件转换为XML,命令可能是: ``` 将SWF转化为XML.exe myAnimation.swf myAnimation.xml ``` 这个过程将生成一个XML文件,该文件详细描述了SWF文件中的所有元素,包括...
Java XML、XSL、HTML 文件转换技术概述 Java XML、XSL、HTML 文件转换是软件开发中的一种常见技术,主要用于将 XML 文件转换为 HTML 文件或其他格式的文件。下面将对该技术进行详细介绍。 XML 文件是什么? XML...
数据库到XML文件的转换是一个常见的数据交换和存储过程,尤其在需要将结构化数据与不同系统集成时。XML(eXtensible Markup Language)是一种可扩展标记语言,它允许我们以自定义的方式描述数据,使其在不同的软件和...
### 如何在Java中将XML文档转换成HTML文档 #### 核心知识点解析: ##### XML与HTML转换背景 XML(eXtensible Markup Language)和HTML(HyperText Markup Language)虽然都属于标记语言,但各自的功能和应用领域...
我采用xml文件记录表单中需要的数据,使用XSLT在服务器端或客户端将该xml文件转换成HTML中需要的FORM表单. 该XSLT是一个通用的模式,只需要简单的模仿例子中的xml文件格式,就可以生成所有形式的表单.
2. **SgmlReader与XmlTextWriter的使用**:在示例代码中,`SgmlReader`类被用来读取HTML内容并将其转换成符合XML规范的数据流。它能够处理HTML中的不规范性,如不闭合的标签等,从而使其适合作为XML数据源。`...
2. **创建HTML文件**:由于IE浏览器可以导入HTML格式的收藏夹,我们需要将XML数据重新组织成HTML格式。创建一个新的HTML文件,如“搜狗收藏夹_to_IE.html”,并在文件中编写HTML代码来表示每个收藏的链接。HTML代码...
另外,我们还需要一个能够处理XML的库,例如System.Xml命名空间中的类,如XmlDocument,用于解析XML文件。 以下是实现这个转换的基本步骤: 1. **XML解析**:使用System.Xml命名空间中的类(如XmlDocument或...