想写一个方法,把一个HTML代码读进来,然后取出<img>标签里的SRC属性值,再判断如果是"http://"开头的就保留,如果不是"http://"开头的(而是本地路径,如"C:")则保留图片文件名,把路径替换为image/filename。再将这个值放回原位。先谢谢大家啦~~~

解决方案 »

  1.   


    下面就是例子
    <code>
    <html dir="ltr"><head><title>预览</title><Base href=http://192.168.0.35:8080/portal/ ><link href="/manager/HtmlEditor/editor/css/fck_editorarea.css" rel="stylesheet" type="text/css" /></head>
    <body><p>
    <img alt="" src="C:\Documents and Settings\user\My Documents\My Pictures\Google Talk\Alien 1.bmp" /></p>
    <center><img alt="英媒称英超队盯上郑智等4人冬季转会袭击查尔顿" src="http://i3.sinaimg.cn/ty/g/2007-11-30/U1022P6T12D3327977F44DT20071130081938.jpg" border="1" /><br /><img style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none" height="5" src="http://i0.sinaimg.cn/home/c.gif" width="1" alt="" /><br />郑智 <br /><br /></center><p>  新浪体育讯 本赛季的英冠联赛中,查尔顿队赛季初期失血严重,包括达伦-本特,马库斯-本特,卢克-扬,赫雷达森等多名主力球员相继投奔了英超其他球队,而查尔顿不得不买来不少其他球员替补昔日主力们纷纷离开后带来的空缺。</p></body></html>
    <code>我最后是想把第一个<img>中src="C:\Documents and Settings\user\My Documents\My Pictures\Google Talk\Alien 1.bmp"替换成src="image\Alien 1.bmp"
    而第二个<img>中的src="http://i3.sinaimg.cn/ty/g/2007-11-30/U1022P6T12D3327977F44DT20071130081938.jpg"中保持不变
    谢谢!~~~
      

  2.   

    这个用ultraedit中的正则表达式就能办到,或者写一个java程序也是通过正则表达式替换也能办到。关于使用ultraedit建议你看:
    http://topic.csdn.net/u/20071130/11/3fd47a4b-7322-49c9-a913-64c60c517b40.html关于ultraedit中正则表达式的用法建议你看:
    http://hi.baidu.com/hahalyf/blog/item/2a670b454a63193c86947330.html
      

  3.   

    嗯~~~~
    您说的我看过了,我想是我可能没说清楚我的目的。
    我是想用java程序来替换
      

  4.   

    java程序也一样啊,同样是正则表达式替换,可能写法上和ultraedit有些不同。
    我手边没有环境,所以不能给你代码。
      

  5.   

    要用就用Dom先~~~
    把HTML String按照dom来处理,然后取出img标签,遍历先
      

  6.   

    建议用正则表达式,用dom解析有点大材小用,而且非常麻烦,不过我一直有心没时间看正则表达式,这里不能帮忙了!只能提点小小的建议
      

  7.   

    我现在用这种方法可以将所有<img>标签中src值取出来
    TEST.txt 如下
    <html dir="ltr"><head><title>预览</title><Base href=http://192.168.0.35:8080/portal/ ><link href="/manager/HtmlEditor/editor/css/fck_editorarea.css" rel="stylesheet" type="text/css" /></head><body><p>This is a test case.</p><p>In order to show the the String which need to be deal with.</p><p>Example image<img alt="" src="C:\Documents and Settings\user\My Documents\My Pictures\Google Talk\Bear.bmp" />&nbsp;and another picture <img alt="" src="C:\Documents and Settings\user\My Documents\My Pictures\Google Talk\Sun.bmp" />and <img alt="纳什:考虑加盟德州球队三强中当属火箭希望最大" src="http://i0.sinaimg.cn/ty/k/2007-12-01/U2138P6T12D3329804F44DT20071201022602.jpg" border="1" /><br />&nbsp;</p></body></html>
    程序源码import java.io.*;
    import java.util.*;
    import javax.swing.text.*;
    import javax.swing.text.html.*;
    import javax.swing.text.html.parser.*;/**  
     *   解析HTML文件中特定元素  
     *   LINK   href  
     *   A   href  
     *   IMG   src  
     *   SCRIPT   src  
     *  
     */
    public class ParseHtml {
    public static void main(String args[]) {
    ParseHtml ph = new ParseHtml(); try {
    String filename = "e:\\TEST.txt";
    BufferedReader brd = new BufferedReader(new FileReader(filename));
    char[] str = new char[50000];
    brd.read(str);
    String sHtml = new String(str); startParse(sHtml);
    } catch (Exception e) {
    e.printStackTrace();
    }
    } private static void startParse(String sHtml) {
    try {
    ParserDelegator parser = new ParserDelegator();
    HTMLEditorKit.ParserCallback callback = new Callback();
    parser.parse(new StringReader(sHtml), callback, true);
    } catch (Exception e) {
    e.printStackTrace();
    }
    } static class Callback extends HTMLEditorKit.ParserCallback {
    public void handleSimpleTag(HTML.Tag t, MutableAttributeSet a, int pos) {
    if (t.equals(HTML.Tag.IMG)) {
    String src = (String) a.getAttribute(HTML.Attribute.SRC);
    if(!src.trim().substring(0, 6).equals("http:/")) {
    src = "image/" + src.substring(src.lastIndexOf("\\") + 1).trim();

    System.out.println(src);
    }

    // count++;
    }
    // if (t.equals(HTML.Tag.LINK)) {
    // String href = (String) a.getAttribute(HTML.Attribute.HREF);
    // System.out.println("No." + count + "   LINK   src=" + href);
    // count++;
    // }
    } public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {
    if (t.equals(HTML.Tag.A)) {
    String src = (String) a.getAttribute(HTML.Attribute.HREF);
    System.out.println(src);
    // count++;
    }
    if (t.equals(HTML.Tag.SCRIPT)) {
    String src = (String) a.getAttribute(HTML.Attribute.SRC);
    System.out.println(src);
    // count++;
    }
    } }
    }输出结果
    image/Bear.bmp
    image/Sun.bmp但是我现在不知道如何将新生成的两个新的src写回去