<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    html的解析以及nekohtml的使用

    Posted on 2008-02-21 18:29 leekiang 閱讀(2895) 評論(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

    主站蜘蛛池模板: 久久久亚洲欧洲日产国码二区| 亚洲国产精品一区| 国产亚洲中文日本不卡二区| 一级毛片免费视频| 亚洲第一页在线观看| 成人免费观看一区二区| 免费成人在线电影| 久久精品国产精品亚洲精品| 国产情侣久久久久aⅴ免费 | 国产男女性潮高清免费网站 | 日本v片免费一区二区三区| 亚洲欧美日韩中文高清www777 | 欧美男同gv免费网站观看| 中文字幕在线日亚洲9| 国产成人精品免费视频软件| 免费一区二区无码视频在线播放| 亚洲国产日韩成人综合天堂| 99精品免费视品| 亚洲日韩国产精品无码av| 妞干网免费观看视频| 无码免费又爽又高潮喷水的视频| 国产亚洲精品a在线观看app| 2021精品国产品免费观看| 国产亚洲福利在线视频| 亚洲成a人片在线观看久| 永久免费AV无码网站国产| 亚洲乱码中文字幕小综合| 免费二级毛片免费完整视频| 免费毛片在线看不用播放器| 亚洲一卡2卡4卡5卡6卡在线99 | 亚洲国产精品网站久久| 国产精品久久香蕉免费播放| 中国精品一级毛片免费播放| 亚洲日韩中文字幕| 亚洲精品国精品久久99热| 91免费国产精品| 污网站在线免费观看| 亚洲精品在线不卡| 免费少妇a级毛片| 精品免费人成视频app| 黄色a三级三级三级免费看|