`
cskysnew
  • 浏览: 13176 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

htmlParser解析html文件

阅读更多
java 代码
  1. public class HtmlFileIo  {   
  2.        
  3.     public static void main (String[] args)   
  4.     {   
  5.         String strFile = "file://tenwa-98bf4155e/zhanghftemp/office/JMO_34.htm";   
  6.         String strDir = "file://tenwa-98bf4155e/zhanghftemp/office";   
  7.         try  
  8.         {   
  9.             //读取一个文件的内容   
  10.             //readByHtml(strFile);   
  11.             //得到一个文件最后修改时间   
  12.             //getRemoteLastModified(strFile);   
  13.             ArrayList al = getRemoteDirInfo(strDir);   
  14.             //获取一个文件夹下所有文件的名称   
  15.             for(int i=0;i<al.size();i++){   
  16.                 System.out.println(al.get(i));   
  17.                 String strName = (al.get(i)).toString();   
  18.                 //获取楼层数   
  19.                 System.out.println(strName.substring(0, strName.indexOf('.')).split("_")[1]);   
  20. //              System.out.println(strDir+"/"+al.get(i));   
  21.                 //获取楼层中的单元信息   
  22. //              ArrayList alArea = readByHtml(strDir+"/"+al.get(i));   
  23. //              for(int j=0;j<alArea.size();j++){   
  24. //                  HashMap hm = (HashMap)alArea.get(j);   
  25.                     //获取楼层中的单元信息   
  26. //                  System.out.println("href:"+hm.get("href")+"      shape:"+hm.get("shape")+"       coords:"+hm.get("coords"));   
  27. //              }   
  28.             }   
  29.         }   
  30.         catch (Exception pe)   
  31.         {   
  32.             pe.printStackTrace ();   
  33.         }   
  34.     }   
  35.        
  36.     /**  
  37.      * 得到指定文件夹下的所有符合规则的文件(本地)  
  38.      * */  
  39.     public static ArrayList getFileList(String content)throws Exception{   
  40.         URI uri = new URI(content);   
  41.         ArrayList al = new ArrayList();   
  42.         File file = new File(uri);   
  43.         System.out.println(file.exists());   
  44.         if(file.isDirectory()){   
  45.             File[] filelist = file.listFiles();   
  46.             for(int i=0;i<filelist.length;i++){   
  47.                 if(filelist[i].getName().substring(04).equals("JMO_")&&getFileTypeName(filelist[i].getName())){   
  48.                     al.add(filelist[i]);   
  49.                 }   
  50.             }   
  51.         }   
  52.         return al;   
  53.     }   
  54.        
  55.     public static boolean getFileTypeName(String strFile){   
  56.         if(strFile.substring(strFile.indexOf(".")+1, strFile.length()).equals("htm")||strFile.substring(strFile.indexOf(".")+1, strFile.length()).equals("html")){   
  57.             return true;   
  58.         }else{   
  59.             return false;   
  60.         }   
  61.     }   
  62.         
  63.     /**  
  64.      * 读取房态图中的单元号,房间大小,area位置  
  65.      * */  
  66.     public static ArrayList readByHtml(String content) throws Exception{   
  67.         ArrayList alRoom = new ArrayList();   
  68.         Parser parser = new Parser();   
  69.         parser.setEncoding("8859_1");   
  70.         parser.setInputHTML(getWmlContent(content));   
  71.   
  72.         PrototypicalNodeFactory factory = new PrototypicalNodeFactory ();   
  73.         factory.registerTag(new AreaTag ());   
  74.         parser.setNodeFactory(factory);   
  75.   
  76.         NodeList nlArea = parser.extractAllNodesThatMatch(lnkFilter);   
  77.         for(int i=0;i<nlArea.size();i++){   
  78.             CompositeTag node = (CompositeTag)nlArea.elementAt(i);   
  79.             if(node instanceof AreaTag){   
  80.                 AreaTag at = (AreaTag)nlArea.elementAt(i);   
  81.                 HashMap hm = new HashMap();   
  82.                 hm.put("href", at.getHref());   
  83.                 hm.put("shape", at.getShape());   
  84.                 hm.put("coords", at.getCoords());   
  85.                 alRoom.add(hm);   
  86.             }   
  87.         }   
  88.         return alRoom;   
  89.     }   
  90.        
  91.     /**  
  92.      * 得到文件中的内容  
  93.      * */  
  94.     static String getWmlContent(String content) throws Exception{   
  95.         StringBuffer wml = new StringBuffer();   
  96.         String line = getRemoteInfo(content);   
  97.         if(wml.length()>0)   
  98.             wml.append("\r\n");   
  99.         wml.append(line);    
  100.         return wml.toString();             
  101.     }   
  102.        
  103.     /**  
  104.      * 得到url文件的最后修改时间  
  105.      * */  
  106.     public static String getRemoteLastModified(String content)throws Exception{   
  107.         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
  108.         URL url = new URL(content);   
  109.         java.util.Date dateLast = new java.util.Date(url.openConnection().getLastModified());   
  110.         String strMod = sdf.format(dateLast);   
  111.         System.out.println(strMod);   
  112.         return strMod;   
  113.     }   
  114.        
  115.     /**  
  116.      * 获取远程html文件的内容  
  117.      * */  
  118.     public static String getRemoteInfo(String content)throws Exception{   
  119.         URL urlfile;   
  120.         BufferedReader in;   
  121.         String inputLine;   
  122.         String info = "";   
  123.         try {   
  124.              urlfile = new URL(content);   
  125.              in = new BufferedReader(new InputStreamReader(urlfile.openStream()));   
  126.              inputLine = in.readLine();   
  127.              while (inputLine != null) {   
  128.              info += inputLine ;   
  129.              inputLine = in.readLine();   
  130.              }   
  131.              in.close();   
  132.         } catch (MalformedURLException e) {   
  133.              // TODO Auto-generated catch block   
  134.              e.printStackTrace();   
  135.         } catch (IOException e){   
  136.              // TODO Auto-generated catch block   
  137.              e.printStackTrace();   
  138.         }   
  139.         return info;   
  140.   
  141.     }   
  142.        
  143.     /**  
  144.      * 获取远程目录中的文件名称  
  145.      * */  
  146.     public static ArrayList getRemoteDirInfo(String content)throws Exception{   
  147.         ArrayList alFile = new ArrayList();   
  148.         URL urlfile;   
  149.         BufferedReader in;   
  150.         String inputLine;   
  151.         String info = "";   
  152.         try {   
  153.              urlfile = new URL(content);   
  154.              in = new BufferedReader(new InputStreamReader(urlfile.openStream()));   
  155.              inputLine = in.readLine();   
  156.              while (inputLine != null) {   
  157.                  if(inputLine.substring(0,4).equals("JMO_")&&getFileTypeName(inputLine)){   
  158.                      alFile.add(inputLine);   
  159.                  }   
  160.                  inputLine = in.readLine();   
  161.              }   
  162.              in.close();   
  163.         } catch (MalformedURLException e) {   
  164.              // TODO Auto-generated catch block   
  165.              e.printStackTrace();   
  166.         } catch (IOException e){   
  167.              // TODO Auto-generated catch block   
  168.              e.printStackTrace();   
  169.         }   
  170.         return alFile;   
  171.   
  172.     }   
  173.   
  174.        
  175.     static NodeFilter lnkFilter = new NodeFilter() {   
  176.         public boolean accept(Node node) {   
  177.             if(node instanceof AreaTag)   
  178.                 return true;   
  179.             return false;   
  180.         }   
  181.     };   
  182.   
  183.     /**  
  184.      * 定义area标签,用于查找area信息  
  185.      * */  
  186.     static class AreaTag extends CompositeTag{   
  187.         private static final String[] mIds = new String[] {"area"};   
  188.   
  189.          private static final String[] mEndTagEnders = new String[] {"map"};   
  190.         /**  
  191.          * Create a new text area tag.  
  192.          */  
  193.         public AreaTag (){   
  194.         }   
  195.   
  196.         /**  
  197.          * Return the set of names handled by this tag.  
  198.          * @return The names to be matched that create tags of this type.  
  199.          */  
  200.         public String[] getIds ()   
  201.         {   
  202.             return (mIds);   
  203.         }   
  204.            
  205.         public String[] getEnders (){   
  206.             return (mIds);   
  207.         }   
  208.   
  209.         public String[] getEndTagEnders (){   
  210.             return (mEndTagEnders);   
  211.         }   
  212.            
  213.         public String getHref(){   
  214.             return super.getAttribute("href");   
  215.         }   
  216.            
  217.         public String getCoords(){   
  218.             return super.getAttribute("coords");   
  219.         }   
  220.            
  221.         public String getShape(){   
  222.             return super.getAttribute("shape");   
  223.         }   
  224.            
  225.         public String toString(){   
  226.             return mIds[0].toString();   
  227.         }   
  228.   
  229.     }   
  230.   
  231. }  
分享到:
评论
4 楼 jjp2009 2008-08-16  
这两句到底读取的是什么啊
3 楼 jjp2009 2008-08-16  
String strFile = "file://tenwa-98bf4155e/zhanghftemp/office/JMO_34.htm";   
        String strDir = "file://tenwa-98bf4155e/zhanghftemp/office";   
楼主这两句话是什么意思啊
2 楼 water84222 2008-04-17  
请问一下,怎样将修改过得html保存到文件中
code如下
parser = new Parser(getContentByLocalFile(file));
    NodeFilter nt = new NodeClassFilter(ImageTag.class) ;
NodeList tmpImageList = (NodeList) parser.parse(nt);

/*linkTmpHash = new Hashtable();
for (int i = 0; i < length; i++) {
Element tmpElement = (Element) tmpNodeList.item(i);
String href = tmpElement.getAttribute("href");
if (href != null && !href.equals("")) {
linkTmpHash.put(href, "");
}
}
data.setHrefs((String[]) linkTmpHash.keySet().toArray(new String[linkTmpHash.size()]));*/
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter (new FileOutputStream (file)));
linkTmpHash = new Hashtable();
for (int i = 0; i < tmpImageList.size(); i++) {
imgnode = (ImageTag)tmpImageList.elementAt(i);
String src = imgnode.getImageURL();
if (URLPathNameUtil.isAbsolutePath(src)) {
if (testAbsolutePath) {
testImagetag(file,src);
}
} else {
if (testRelativePath) {
testImagetag(file, src);
}
}
if(getRealPath()!=null){
imgnode.setImageURL(getRealPath());
writer.write(tmpImageList.toHtml());
}
/*if (src != null && !src.equals("")) {
linkTmpHash.put(src, "");
}*/
}
writer.flush();
writer.close ();

谢谢了
1 楼 yongtree 2007-10-17  
顶!
好东东哦。

相关推荐

    htmlparser解析Html的jar包和源文件包(两个)

    HTMLParser是一款专为Java开发人员设计的开源库,用于解析HTML文档。这个工具包小巧而强大,能够处理不规则的HTML结构,对于处理网络爬虫、网页数据提取或需要解析HTML内容的应用程序来说,是非常实用的。在提供的...

    htmlparser解析html分页

    HTMLParser是一个用于解析HTML文档的库,尤其在处理非结构化或不标准的HTML时非常有用。这个库可能被用于从网页中提取数据,比如在爬虫项目中,或者进行自动化测试时解析页面内容。本篇文章将深入探讨HTMLParser的...

    htmlparser(HTML页面解析)例子

    HTMLParser是Python中用于解析HTML文档的一个库,它允许开发者以事件驱动的方式处理HTML文档的结构。这个库特别适用于从不规范的HTML源码中提取数据,因为网页内容的格式可能会因各种原因而不尽完美。在本例中,我们...

    htmlparser.jar文件

    HTMLParser.jar 文件是一个Java库,主要用于解析HTML文档。在Java开发中,如果你需要处理或分析HTML内容,HTMLParser是一个非常有用的工具。这个库提供了一套API,使得开发者能够方便地遍历、修改或者提取HTML文档中...

    java解析html工具htmlparser的jar包及api文档

    例如,以下是一个简单的使用示例,展示如何使用HTMLParser解析一个HTML字符串并打印出所有的`&lt;a&gt;`标签: ```java import org.htmlparser.Parser; import org.htmlparser.util.NodeIterator; import org.htmlparser....

    htmlparser_Java网页解析器

    HTMLParser提供了强大的解析能力,可以解析HTML文档并将其转化为结构化的数据。它能够处理不规则的HTML代码,支持XML和HTML5标准,并提供多种解析模式,包括事件驱动、DOM模型和SAX解析。通过这些模式,开发者可以...

    跨平台的Html解析代码_武稀松_HtmlParser.rar

    这个项目的核心是HtmlParser,它可能是一个用Delphi编写的库或框架,旨在帮助程序员在不同的操作系统上解析HTML内容。 【描述】描述中的“跨平台的Html解析代码_武稀松_HtmlParser.rar”再次强调了这是个用于解析...

    使用HTMLParser解析网页,找出文章后下载保存

    总结来说,使用HTMLParser解析网页涉及到以下步骤: 1. 继承`HTMLParser`并重写相关方法以定义解析逻辑。 2. 找到文章内容所在的标签,如`&lt;p&gt;`或`&lt;article&gt;`,并在适当的方法中处理它们。 3. 收集文章文本,并在适当...

    java实现js、css、图片合并到html文件

    技术点:1、使用htmlparser解析html文件,得到html代码里的js、css、img链接 2、将相对路径的链接转变成绝对路径,并读取资源 3、将css和js合并到html 4、将图片转换成base64编码,写入标签的src

    html解析两个jar htmllexer.jar htmlparser.jar

    在这个场景中,`htmllexer.jar` 和 `htmlparser.jar` 是两个Java库,专门用于解析HTML。 `htmllexer.jar` 可能是基于HtmlLexer项目,它是一个词法分析器,负责将HTML源代码分解成一系列的标记或令牌。词法分析是...

    c#版htmlparser htmlparser.dll htmlparser源代码

    HTMLParser是一款用于解析HTML文档的库,主要针对C#编程语言设计。在.NET环境中,开发者经常需要处理HTML数据,例如从网页抓取信息或者进行网页自动化。HTMLParser库提供了便捷的方式来解析复杂的HTML结构,提取所需...

    HtmlParser

    HTMLParser是用于解析HTML文档的一种工具或库,尤其在网络爬虫技术中扮演着关键角色。网络爬虫,也称为网络蜘蛛或Web抓取器,是一种自动浏览互联网并收集信息的程序。它广泛应用于搜索引擎优化、数据分析、市场研究...

    htmlParser javacc .jj文件

    在HTMLParser的上下文中,`.jj`文件可能包含了HTML语法的BNF(巴科斯范式)描述,JavaCC会依据这个描述生成解析HTML的Java类。这样,HTMLParser就可以利用JavaCC生成的解析器高效且准确地理解HTML文档结构。 在`.jj...

    htmlparser的jar包

    HTMLParser是一个Java库,专门设计用于解析HTML文档。在处理WAP(无线应用协议)页面时,这个库显得尤其有用,因为WAP页面通常比标准的HTML页面更简单,但仍然需要有效地解析和提取信息。以下是对HTMLParser库及其在...

    html解析工具htmllexer+htmlparser-2.1

    在处理HTML文档时,有时我们需要解析HTML内容,提取所需信息,这正是HTML解析工具的作用。`htmllexer`和`htmlparser`是两个用于Java平台的HTML解析库,它们为开发者提供了方便的方式来处理HTML文档。 `htmllexer`是...

    htmlparser

    按DOM模型解析html文件的工具包 已下是源码列表: META-INF/MANIFEST.MF META-INF/maven/org.htmlparser/htmlparser/pom.properties META-INF/maven/org.htmlparser/htmlparser/pom.xml org.htmlparser.Parser.class ...

    Delphi通过MSHTML实现一个HTML解析类

    在IT领域,HTML(HyperText Markup Language)是用于创建网页的标准标记语言,而解析HTML则是为了提取、操作或处理网页中的信息。Delphi是一个强大的Windows应用程序开发环境,它支持多种编程任务,包括处理HTML。本...

    HtmlParser源码及demo

    HTMLParser是一个Java库,用于解析HTML文档,提取结构化数据并处理HTML标记。这个库特别适合在不完全符合标准的HTML文档中导航和操作元素,因为网页在实际环境中经常会出现这种情况。以下是对`HtmlParser`及其相关...

    HTML文档解析器 HTMLParser.7z

    HTML文档解析器是一款用于处理和解析HTML文档的工具,它能够帮助开发者有效地分析网页结构,提取所需信息。在这个名为"HTMLParser.7z"的压缩包中,包含的文件是"HTMLParser-2.0-SNAPSHOT",这通常表示一个软件库或...

Global site tag (gtag.js) - Google Analytics