java怎样读取html文件

java怎样读取html文件,第1张

     java读取html文件跟读取普通文件一样,都是使用输入输出流,但是java读取html文件之后还需要解析,使用Jsoup对html进行解析。下面是一个java读取带表格的任意html文件,并把html文件转换成excel的例子

  要求: 要求能够实现给出任意带table表格的html文件,生成与表格相同内容的excel文件,附件可以作为测试文件,提供给定的rosterhtml文件,通过java代码,实现生成与html页面的table相同样式的rosterxls文件。

首先看rosterhtml:

java代码:

import javaioBufferedReader;

import javaioFile;

import javaioFileReader;

import javaioIOException;

import jxlWorkbook;

import jxlwriteLabel;

import jxlwriteWritableCellFormat;

import jxlwriteWritableFont;

import jxlwriteWritableSheet;

import jxlwriteWritableWorkbook;

import jxlwriteWriteException;

import jxlwritebiffRowsExceededException;

import orgjsoupJsoup;

import orgjsoupnodesDocument;

import orgjsoupnodesElement;

import orgjsoupselectElements;

public class HTMLTOExcel {

public static void main(String args[]) throws IOException{

///读取classpath目录下面的路径

String path=HTMLTOExcelclassgetResource("/")getPath();

path+="rosterhtml";

toExcel(path,"roster");      

    }

    //得到Document并且设置编码格式

public static Document getDoc(String fileName) throws IOException{

      File myFile=new File(fileName);

      Document doc= Jsoupparse(myFile, "GBK","");

      return doc;

}

///这个方法用于根据trs行数和sheet画出整个表格

public static void mergeColRow(Elements trs,WritableSheet sheet) throws RowsExceededException, WriteException{

int[][] rowhb=new int[300][50];

for(int i=0;i<trssize();i++){

 Element tr=trsget(i);

 Elements tds=trgetElementsByTag("td");

 

 int realColNum=0;

 for(int j=0;j<tdssize();j++){

  Element td=tdsget(j);  

  if(rowhb[i][realColNum]!=0){

  realColNum=getRealColNum(rowhb,i,realColNum);

  }

  int rowspan=1;

  int colspan=1;

  if(tdattr("rowspan")!=""){

  rowspan = IntegerparseInt(tdattr("rowspan"));

  }

  if(tdattr("colspan")!=""){

  colspan = IntegerparseInt(tdattr("colspan"));

  }

  String text=tdtext();

  drawMegerCell(rowspan,colspan,sheet,realColNum,i,text,rowhb);

  realColNum=realColNum+colspan;

 }

 

}

}

///这个方法用于根据样式画出单元格,并且根据rowpan和colspan合并单元格

public static void drawMegerCell(int rowspan,int colspan,WritableSheet sheet,int realColNum,int realRowNum,String text,int[][] rowhb) throws RowsExceededException, WriteException{

  for(int i=0;i<rowspan;i++){

  for(int j=0;j<colspan;j++){

  if(i!=0||j!=0){

 text="";

  }

  Label label = new Label(realColNum+j,realRowNum+i,text);

   WritableFont countents = new WritableFont(WritableFontTIMES,10); // 设置单元格内容,字号12  

   WritableCellFormat cellf = new WritableCellFormat(countents ); 

   cellfsetAlignment(jxlformatAlignmentCENTRE);//把水平对齐方式指定为居中

   cellfsetVerticalAlignment(jxlformatVerticalAlignmentCENTRE);//把垂直对齐方式指定为居

   labelsetCellFormat(cellf);

   sheetaddCell(label);

   rowhb[realRowNum+i][realColNum+j]=1;

  }

  }

  sheetmergeCells(realColNum,realRowNum, realColNum+colspan-1,realRowNum+rowspan-1);

}

public static int getRealColNum(int[][] rowhb,int i,int realColNum){

while(rowhb[i][realColNum]!=0){

realColNum++;

}

return realColNum;

}

///根据colgroups设置表格的列宽

public static void setColWidth(Elements colgroups,WritableSheet sheet){

 if(colgroupssize()>0){

 Element colgroup=colgroupsget(0);

 Elements cols=colgroupgetElementsByTag("col");

 for(int i=0;i<colssize();i++){

 Element col=colsget(i);

 String strwd=colattr("width");

 if(colattr("width")!=""){

 int wd=IntegerparseInt(strwd);

 sheetsetColumnView(i,wd/8);

 }

 

 }

 

 }

}

//toExcel是根据html文件地址生成对应的xls

public static void toExcel(String fileName,String excelName)throws IOException{

Document doc=getDoc(fileName);

    String title = doctitle();

    ///得到样式,以后可以根据正则表达式解析css,暂且没有找到cssparse

    Elements style= docgetElementsByTag("style");

    ///得到Table,demo只演示输入一个table,以后可以用循环遍历tables集合输入所有table

    Elements tables= docgetElementsByTag("TABLE");    

    if(tablessize()==0){

    return;

    }

    Element table=tablesget(0);

   //得到所有行

    Elements trs = tablegetElementsByTag("tr");

    ///得到列宽集合

    Elements colgroups=tablegetElementsByTag("colgroup");

    

   try {

   //文件保存到classpath目录下面

    String path=HTMLTOExcelclassgetResource("/")getPath();

path+=excelName+"xls";

 Systemoutprintln(path);

    WritableWorkbook book = WorkbookcreateWorkbook(new File(path));    

    WritableSheet sheet = bookcreateSheet("人事关系", 0);  

    setColWidth(colgroups,sheet);

    mergeColRow(trs,sheet);    

    bookwrite();    

    bookclose();    

   } catch (RowsExceededException e) {

        eprintStackTrace();

   } catch (WriteException e) { 

        eprintStackTrace();

   }

}

}

解析html文件的例子文档地址:>

交互方法:

 1 <applet name="appletName" /$amp;>amp;$nbsp;  

 2 //JavaScript访问Applet属性   

 3 windowdocumentappletNameappletField  

      (属性必须是public的,"windowdocument"也可以不写)   

 4 /JavaScript访问Applet方法   

 5 windowdocumentappletNameappletMethod  

      (方法必须是public的,"windowdocument"也可以不写)

~

简单实现:

HtmlRequest类的内容:

[java] view plaincopy

package comcapinfotechnet;

import javaioByteArrayOutputStream;

import javaioIOException;

import javaioInputStream;

import javanet>

1 使用表单的方式传参

把表单元素放在<form> 标签里面,直接提交表单就行

2 使用URL重定向方式传值

比如:locationhref = "logindomethod=checktel&name=lisi&age=10";

后台通过 request 对象接收参数

String name = requestgetParameter("name");

String age = requestgetParameter("age");

您好,这样的:

解析HTML文档的Java程序

下面是一个解析HTML字符串,网络上下载的HTML文件,以及本地文件系统中的HTML文件的完整的Java程序。你可以使用Eclipse IDE或者别的IDE甚至命令来运行这个程序。在Eclipse里面则很简单,拷贝这份代码,新建一个Java工程,在src包上右键并粘贴进去就可以了。Eclipse会去创建正确的包及同名的Java源文件的,因此工作量最小。如果你已经有一个Java示例工程了,那么仅需一步就可以了。下面的这个Java程序展示了解析及遍历HTML文件的三个不同例子。第一个例子中,我们直接解析了一个内容为HTML的字符串,第二个例子中我们解析了一个从URL中下载的HTML文件,第三个中我们从本地文件系统中加载了一个HTML文档并进行解析。第一和第三个例子中都用到了parse方法来获取一个Document对象,你可以查询它来提取出任何的标签值或者属性值。第二个例子中,我们用到了Jsoupconnect方法,它会去创建URL的连接,下载HTML并进行解析。这个方法也会返回Document,它可以用于后续的查询及获取标签或者属性的值。

import javaioIOException;

import orgjsoupJsoup;

import orgjsoupnodesDocument;

import orgjsoupnodesElement;

/

[] Java Program to parse/read HTML documents from File using Jsoup library

[] Jsoup is an open source library which allows Java developer to parse HTML

[] files and extract elements, manipulate data, change style using DOM, CSS and

[] JQuery like method

[]

[] @author Javin Paul

[]/

public class HTMLParser{

public static void main(String args[]) {

// Parse HTML String using JSoup library

String HTMLSTring = "<!DOCTYPE html>"

+ "<html>"

+ "<head>"

+ "<title>JSoup Example</title>"

+ "</head>"

+ "<body>"

+ "|[b]HelloWorld[/b]"

+ ""

+ "</body>"

+ "</html>";

Document html = Jsoupparse(HTMLSTring);

String title = htmltitle();

String h1 = htmlbody()getElementsByTag("h1")text();

Systemoutprintln("Input HTML String to JSoup :" + HTMLSTring);

Systemoutprintln("After parsing, Title : " + title);

Systemoutprintln("Afte parsing, Heading : " + h1);

// JSoup Example 2 - Reading HTML page from URL

Document doc;

try {

doc = Jsoupconnect(">

以上就是关于java怎样读取html文件全部的内容,包括:java怎样读取html文件、如何使用java提取html页面中script标签里面的值、给了一个HTML HTML里有个Button 点击让调用java类中的方法 java类继承了Applet 没有框架 不是web项目等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9742368.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存