<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 閱讀(2902) 評論(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

    主站蜘蛛池模板: 成人性做爰aaa片免费看| 亚洲成a人片毛片在线| 亚洲AV综合永久无码精品天堂| 久久免费精彩视频| 亚洲av无码国产精品色午夜字幕| 一级毛片完整版免费播放一区| 免费A级毛片无码A| 免费精品国自产拍在线播放| 免费人成视频x8x8入口| 九九视频高清视频免费观看| JLZZJLZZ亚洲乱熟无码| 好紧我太爽了视频免费国产| 亚洲AV乱码一区二区三区林ゆな| 久久久久久毛片免费播放| 亚洲综合色丁香麻豆| 毛片A级毛片免费播放| 亚洲av无码一区二区三区四区| 国产一级高清视频免费看| 人妻仑刮八A级毛片免费看| 久久久久亚洲AV无码专区网站 | 亚洲精品无码专区久久久| 最近国语视频在线观看免费播放| 亚洲日韩区在线电影| 无限动漫网在线观看免费| 老司机福利在线免费观看| 国产亚洲情侣一区二区无码AV| 免费人妻无码不卡中文字幕系| 亚洲av产在线精品亚洲第一站| 国产hs免费高清在线观看| 成人网站免费大全日韩国产| 亚洲精品国产专区91在线| 国产美女无遮挡免费视频| a级成人免费毛片完整版| 国产成人精品日本亚洲专| 亚洲国产成人精品女人久久久 | 久久久受www免费人成| 亚洲日本香蕉视频观看视频| 国产伦精品一区二区三区免费下载| 9i9精品国产免费久久| 亚洲av无码片在线观看| 国产AⅤ无码专区亚洲AV|