﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-走好脚下的路,让别人去说吧!-随笔分类-Java专题-词法解析</title><link>http://www.blogjava.net/human2008/category/28773.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 11 Jan 2008 10:27:55 GMT</lastBuildDate><pubDate>Fri, 11 Jan 2008 10:27:55 GMT</pubDate><ttl>60</ttl><item><title>分析/解析Html页面:HTML Parser的试用 </title><link>http://www.blogjava.net/human2008/archive/2008/01/11/174505.html</link><dc:creator>灵!</dc:creator><author>灵!</author><pubDate>Fri, 11 Jan 2008 01:45:00 GMT</pubDate><guid>http://www.blogjava.net/human2008/archive/2008/01/11/174505.html</guid><wfw:comment>http://www.blogjava.net/human2008/comments/174505.html</wfw:comment><comments>http://www.blogjava.net/human2008/archive/2008/01/11/174505.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/human2008/comments/commentRss/174505.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/human2008/services/trackbacks/174505.html</trackback:ping><description><![CDATA[<p>最近在研究lucene的全文检索,在很多地方需要解析或者说分析Html内容或者Html页面,Lucene本身的演示程序中也提供了一个Html Parser,但是不是纯Java的解决方案.于是到处搜索,在网上找到了一个"HTMLParser".</p>
<p>网址是: <a href="http://htmlparser.sourceforge.net/">http://htmlparser.sourceforge.net</a>&nbsp;,当前版本为1.5. </p>
<p>下载下来,试用一番,感觉不错,完全能满足lucene解析Html的需求.</p>
<p>过几天贴出lucene进行全文检索的代码.(检索本站的文章等).</p>
<p>试用代码如下,供大家参考:</p>
<p>
<table class="code" cellspacing="1" cellpadding="1" width="80%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <p>package com.jscud.test;</p>
            <p>import java.io.BufferedReader;<br />
            import java.io.File;<br />
            import java.io.FileInputStream;<br />
            import java.io.InputStreamReader;</p>
            <p>import org.htmlparser.Node;<br />
            import org.htmlparser.NodeFilter;<br />
            import org.htmlparser.Parser;<br />
            import org.htmlparser.filters.NodeClassFilter;<br />
            import org.htmlparser.filters.OrFilter;<br />
            import org.htmlparser.nodes.TextNode;<br />
            import org.htmlparser.tags.LinkTag;<br />
            import org.htmlparser.util.NodeList;<br />
            import org.htmlparser.util.ParserException;<br />
            import org.htmlparser.visitors.HtmlPage;<br />
            import org.htmlparser.visitors.TextExtractingVisitor;</p>
            <p>import com.jscud.util.LogMan; //一个日志记录类</p>
            <p>/**<br />
            &nbsp;* 演示了Html Parse的应用.<br />
            &nbsp;* <br />
            &nbsp;* @author scud <a href="http://www.jscud.com/">http://www.jscud.com</a><br />
            &nbsp;*/</p>
            <p>public class ParseHtmlTest<br />
            {</p>
            <p>&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception<br />
            &nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String aFile = "e:/jscud/temp/test.htm";</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String content = readTextFile(aFile, "GBK");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test1(content);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("====================================");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test2(content);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("====================================");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test3(content);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("====================================");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test4(content);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("====================================");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test5(aFile);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("====================================");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //访问外部资源,相对慢<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test5("<a href="http://www.jscud.com/">http://www.jscud.com</a>"); <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("====================================");</p>
            <p>&nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp; /**<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 读取文件的方式来分析内容.<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * filePath也可以是一个Url.<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param resource 文件/Url<br />
            &nbsp;&nbsp;&nbsp;&nbsp; */<br />
            &nbsp;&nbsp;&nbsp; public static void test5(String resource) throws Exception<br />
            &nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Parser myParser = new Parser(resource);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置编码<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myParser.setEncoding("GBK");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HtmlPage visitor = new HtmlPage(myParser);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myParser.visitAllNodesWith(visitor);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String textInPage = visitor.getTitle();</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(textInPage);<br />
            &nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp; /**<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 按页面方式处理.对一个标准的Html页面,推荐使用此种方式.<br />
            &nbsp;&nbsp;&nbsp;&nbsp; */<br />
            &nbsp;&nbsp;&nbsp; public static void test4(String content) throws Exception<br />
            &nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Parser myParser;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myParser = Parser.createParser(content, "GBK");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HtmlPage visitor = new HtmlPage(myParser);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myParser.visitAllNodesWith(visitor);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String textInPage = visitor.getTitle();</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(textInPage);<br />
            &nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp; /**<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 利用Visitor模式解析html页面.<br />
            &nbsp;&nbsp;&nbsp;&nbsp; *<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 小优点:翻译了&lt;&gt;等符号 <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 缺点:好多空格,无法提取link<br />
            &nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp; <br />
            &nbsp;&nbsp;&nbsp;&nbsp; */<br />
            &nbsp;&nbsp;&nbsp; public static void test3(String content) throws Exception<br />
            &nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Parser myParser;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myParser = Parser.createParser(content, "GBK");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextExtractingVisitor visitor = new TextExtractingVisitor();</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myParser.visitAllNodesWith(visitor);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String textInPage = visitor.getExtractedText();</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(textInPage);<br />
            &nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp; /**<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 得到普通文本和链接的内容.<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 使用了过滤条件.<br />
            &nbsp;&nbsp;&nbsp;&nbsp; */<br />
            &nbsp;&nbsp;&nbsp; public static void test2(String content) throws ParserException<br />
            &nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Parser myParser;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NodeList nodeList = null;</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myParser = Parser.createParser(content, "GBK");</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NodeFilter textFilter = new NodeClassFilter(TextNode.class);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NodeFilter linkFilter = new NodeClassFilter(LinkTag.class);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //暂时不处理 meta<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //NodeFilter metaFilter = new NodeClassFilter(MetaTag.class);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OrFilter lastFilter = new OrFilter();<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lastFilter.setPredicates(new NodeFilter[] { textFilter, linkFilter });</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nodeList = myParser.parse(lastFilter);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node[] nodes = nodeList.toNodeArray();</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; nodes.length; i++)<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node anode = (Node) nodes[i];</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String line = "";<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (anode instanceof TextNode)<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextNode textnode = (TextNode) anode;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //line = textnode.toPlainTextString().trim();<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line = textnode.getText();<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (anode instanceof LinkTag)<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LinkTag linknode = (LinkTag) anode;</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line = linknode.getLink();<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a>//@todo</a> 过滤jsp标签:可以自己实现这个函数<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //line = StringFunc.replace(line, "&lt;%.*%&gt;", "");<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isTrimEmpty(line))<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(line);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp; /**<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 解析普通文本节点.<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param content<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @throws ParserException<br />
            &nbsp;&nbsp;&nbsp;&nbsp; */<br />
            &nbsp;&nbsp;&nbsp; public static void test1(String content) throws ParserException<br />
            &nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Parser myParser;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node[] nodes = null;</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myParser = Parser.createParser(content, null);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nodes = myParser.extractAllNodesThatAre(TextNode.class); //exception could be thrown here</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; nodes.length; i++)<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextNode textnode = (TextNode) nodes[i];<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String line = textnode.toPlainTextString().trim();<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (line.equals(""))<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(line);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp; /**<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 读取一个文件到字符串里.<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * <br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param sFileName&nbsp; 文件名<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param sEncode&nbsp;&nbsp; String<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @return 文件内容<br />
            &nbsp;&nbsp;&nbsp;&nbsp; */<br />
            &nbsp;&nbsp;&nbsp; public static String readTextFile(String sFileName, String sEncode)<br />
            &nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuffer sbStr = new StringBuffer();</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; File ff = new File(sFileName);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InputStreamReader read = new InputStreamReader(new FileInputStream(ff),<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sEncode);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedReader ins = new BufferedReader(read);</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String dataLine = "";<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (null != (dataLine = ins.readLine()))<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sbStr.append(dataLine);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sbStr.append("\r\n");<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ins.close();<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch (Exception e)<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LogMan.error("read Text File Error", e);<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return sbStr.toString();<br />
            &nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp; /**<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 去掉左右空格后字符串是否为空<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param astr String<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @return boolean<br />
            &nbsp;&nbsp;&nbsp;&nbsp; */<br />
            &nbsp;&nbsp;&nbsp; public static boolean isTrimEmpty(String astr)<br />
            &nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((null == astr) || (astr.length() == 0))<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (isBlank(astr.trim()))<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
            &nbsp;&nbsp;&nbsp; }</p>
            <p>&nbsp;&nbsp;&nbsp; /**<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * 字符串是否为空:null或者长度为0.<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @param astr 源字符串.<br />
            &nbsp;&nbsp;&nbsp;&nbsp; * @return boolean<br />
            &nbsp;&nbsp;&nbsp;&nbsp; */<br />
            &nbsp;&nbsp;&nbsp; public static boolean isBlank(String astr)<br />
            &nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((null == astr) || (astr.length() == 0))<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false;<br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
            &nbsp;&nbsp;&nbsp; }</p>
            <p>}</p>
            <p>&nbsp;</p>
            </td>
        </tr>
    </tbody>
</table>
<br />
</p>
<img src ="http://www.blogjava.net/human2008/aggbug/174505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/human2008/" target="_blank">灵!</a> 2008-01-11 09:45 <a href="http://www.blogjava.net/human2008/archive/2008/01/11/174505.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>