<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    html的解析以及nekohtml的使用

    Posted on 2008-02-21 18:29 leekiang 閱讀(2902) 評(píng)論(0)  編輯  收藏 所屬分類: 文件處理
    ??? import ?org.cyberneko.html.parsers.DOMFragmentParser;
    ???? import org.apache.html.dom.HTMLDocumentImpl;
    ????
    import ?org.w3c.dom.DocumentFragment;
    ????
    import ?org.w3c.dom.Node;
    ????
    import ?org.w3c.dom.NodeList;
    ????
    import ?org.xml.sax.InputSource;
    ????
    import ?org.xml.sax.SAXException;

    ????
    /**
    ?????*?從html中抽取純文本
    ?????*?
    ?????*?
    @param ?content
    ?????*?
    @return
    ?????*?
    @throws ?UnsupportedEncodingException
    ?????
    */
    ????
    public ?String?extractTextFromHTML(String?content)
    ????????????
    throws ?UnsupportedEncodingException?{
    ????????DOMFragmentParser?parser?
    = ? new ?DOMFragmentParser();
    ????????DocumentFragment?node?
    = ? new ?HTMLDocumentImpl().createDocumentFragment();
    ????????InputStream?is?
    = ? new ?ByteArrayInputStream(content.getBytes());
    ????????
    try ?{
    ????????????parser.parse(
    new ?InputSource(is),?node);
    ????????}?
    catch ?(IOException?e)?{
    ????????????e.printStackTrace();
    ????????}?
    catch ?(SAXException?se)?{
    ????????????se.printStackTrace();
    ????????}

    ????????StringBuffer?newContent?
    = ? new ?StringBuffer();
    ????????
    this .getText(newContent,?node);

    ????????String?str?
    = ?( new ?String(
    ????????????????newContent.toString().getBytes(
    " Windows-1252 " ),? " GBK " ));
    ????????
    return ?str;
    ????}

    ????
    private ? void ?getText(StringBuffer?sb,?Node?node)?{
    ????????
    if ?(node.getNodeType()? == ?Node.TEXT_NODE)?{
    ????????????sb.append(node.getNodeValue());
    ????????}
    ????????NodeList?children?
    = ?node.getChildNodes();
    ????????
    if ?(children? != ? null )?{
    ????????????
    int ?len? = ?children.getLength();
    ????????????
    for ?( int ?i? = ? 0 ;?i? < ?len;?i ++ )?{
    ????????????????getText(sb,?children.item(i));
    ????????????}
    ????????}
    ????}

    1,nekohtml1.9.6.1版本用到了jdk5的Arrays.hashCode等方法,為兼容jdk1.4,
    ? 故采用nekohtml1.9.6版本
    2,需要xerces.jar支持
    3,
    ?? http://hi.baidu.com/walkandsing/blog/item/f5743634c6ba2e3a5bb5f5e5.html
    ?? http://blog.csdn.net/zhou2002/archive/2008/01/19/2053911.aspx
    ?? http://playfish.javaeye.com/blog/150184

    4,
    python解析html
    http://lenciel.cn/docs/python-parser-of-xml/
    http://hi.baidu.com/javalang/blog/item/84bac4bf731fb80f18d81fe1.html
    ruby用hpricot

    主站蜘蛛池模板: 老司机午夜性生免费福利| 免费观看一级毛片| 羞羞漫画在线成人漫画阅读免费| 久久亚洲AV无码精品色午夜| 国产aⅴ无码专区亚洲av麻豆| 在线播放免费播放av片| 中国人xxxxx69免费视频| 岛国精品一区免费视频在线观看 | 亚洲天堂免费在线视频| 狠狠色伊人亚洲综合网站色 | 免费人成在线观看网站| 日本精品久久久久久久久免费| 亚洲色偷偷综合亚洲av78| 亚洲美女大bbbbbbbbb| 亚洲AV综合色一区二区三区| 国产成人精品日本亚洲专区61 | 亚洲av无码无线在线观看| 亚洲综合综合在线| 久久久亚洲欧洲日产国码二区 | 四虎影视无码永久免费| yy一级毛片免费视频| 免费人成网站永久| 无套内射无矿码免费看黄| 处破女第一次亚洲18分钟| 亚洲JLZZJLZZ少妇| 国产亚洲精品美女久久久久| 亚洲精品亚洲人成在线 | 免费在线观看视频a| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 亚洲午夜精品久久久久久人妖| 亚洲国产另类久久久精品小说| 亚洲熟妇中文字幕五十中出| 狠狠色婷婷狠狠狠亚洲综合| 国产亚洲精品拍拍拍拍拍| 最新精品亚洲成a人在线观看| 久久精品国产精品亚洲| 亚洲精品乱码久久久久久中文字幕| 亚洲熟女少妇一区二区| 亚洲国产精品lv| 亚洲国产日产无码精品| 国产人成亚洲第一网站在线播放|