<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

    主站蜘蛛池模板: 久久免费的精品国产V∧| 中文字幕的电影免费网站| 亚洲一区二区三区免费视频| 亚洲国产精华液网站w| 特级做A爰片毛片免费看无码| 一本色道久久综合亚洲精品高清 | 精品国产亚洲男女在线线电影| 看免费毛片天天看| 亚洲福利视频一区二区| 乱人伦中文视频在线观看免费| 亚洲精品专区在线观看| 精品久久久久久无码免费| 亚洲国产精品一区第二页| 99精品视频在线观看免费专区| 67pao强力打造67194在线午夜亚洲 | 一级毛片免费在线| 亚洲精品中文字幕乱码三区| 久久久久久成人毛片免费看| 亚洲一区二区三区夜色| 青苹果乐园免费高清在线| 国产精品亚洲а∨无码播放不卡 | 亚洲人成网77777色在线播放| 两个人看的www免费| 亚洲国产一区国产亚洲| 岛国片在线免费观看| 美女又黄又免费的视频| 国产亚洲综合一区柠檬导航| 四虎在线免费视频| 亚洲AV成人精品日韩一区| 亚洲熟妇av一区二区三区| 免费国产污网站在线观看| 久久久亚洲欧洲日产国码是AV| 永久免费的网站在线观看| 免费精品国自产拍在线播放| 亚洲成色在线综合网站| 成人黄页网站免费观看大全| 一级毛片在线播放免费| 久久久久精品国产亚洲AV无码| 九月婷婷亚洲综合在线| 亚洲kkk4444在线观看| 在线观看亚洲成人|