www.pudn.com > htmlsaver.rar > DealHTMLTagSaveURL.java


import javax.swing.text.MutableAttributeSet; 
import javax.swing.text.html.*; 
import java.net.*; 
import java.util.*; 
import java.io.*; 
 
public class DealHTMLTagSaveURL implements DealHTMLTag 
{ 
  protected Project prj; 
  protected FileURLChange change; 
   
  protected HTML.Tag lastTag; 
   
  DealHTMLTagSaveURL (Project prj, FileURLChange change) 
  { 
    this.prj = prj; 
    this.change = change; 
    lastTag = null; 
  } 
   
  public boolean dealTag (HTML.Tag tag, MutableAttributeSet attributes) 
  { 
    if (tag == HTML.Tag.A) 
    { 
      if (attributes.isDefined(HTML.Attribute.HREF)) 
      { 
        String rel = (String)attributes.getAttribute(HTML.Attribute.HREF); 
        String url = change.getRelativeFile(rel); 
        if (prj.names.containsKey(url)) 
        { 
          URLName name = (URLName)prj.names.get(url); 
          attributes.removeAttribute(HTML.Attribute.HREF); 
          attributes.addAttribute(HTML.Attribute.HREF, name.name); 
        } 
        else if (prj.sNullLink) 
        { 
          attributes.removeAttribute(HTML.Attribute.HREF); 
          attributes.addAttribute(HTML.Attribute.HREF, url); 
        } 
        else 
        { 
          attributes.removeAttribute(HTML.Attribute.HREF); 
        } 
      } 
    } 
    else if (tag == HTML.Tag.IMG) 
    { 
      if (attributes.isDefined(HTML.Attribute.SRC)) 
      { 
        String rel = (String)attributes.getAttribute(HTML.Attribute.SRC); 
        String url = change.getRelativeFile(rel); 
        if (prj.names.containsKey(url)) 
        { 
          URLName name = (URLName)prj.names.get(url); 
          attributes.removeAttribute(HTML.Attribute.SRC); 
          attributes.addAttribute(HTML.Attribute.SRC, name.name); 
        } 
        else if (prj.sNullLink) 
        { 
          attributes.removeAttribute(HTML.Attribute.SRC); 
          attributes.addAttribute(HTML.Attribute.SRC, url); 
        } 
        else 
        { 
          attributes.removeAttribute(HTML.Attribute.SRC); 
        } 
      } 
    } 
    else if (tag == HTML.Tag.SCRIPT) 
    { 
      if (attributes.isDefined(HTML.Attribute.SRC)) 
      { 
        String rel = (String)attributes.getAttribute(HTML.Attribute.SRC); 
        String url = change.getRelativeFile(rel); 
        if (prj.names.containsKey(url)) 
        { 
          URLName name = (URLName)prj.names.get(url); 
          attributes.removeAttribute(HTML.Attribute.SRC); 
          attributes.addAttribute(HTML.Attribute.SRC, name.name); 
        } 
        else 
        { 
          attributes.removeAttribute(HTML.Attribute.SRC); 
          attributes.addAttribute(HTML.Attribute.SRC, url); 
        } 
      } 
      else if (!prj.sScript) 
      { 
      } 
    } 
    else if (tag == HTML.Tag.BASE) 
    { 
      String base = (String)attributes.getAttribute(HTML.Attribute.HREF); 
    } 
     
    return true; 
  } 
   
  public boolean dealEndTag (HTML.Tag tag) 
  { 
    return true; 
  } 
   
  public boolean dealText (char[] text) 
  { 
    return true; 
  } 
   
  protected boolean has(String url) 
  { 
    Enumeration iter = prj.names.elements(); 
    while (iter.hasMoreElements()) 
    { 
      URLName name = (URLName)iter.nextElement(); 
      if (url.equals(name.url)) 
        return true; 
    } 
    return false; 
  } 
   
  public static void main(String[] str) 
  { 
    Project project; 
    try { 
      project = new Project("f:\\other\\BTB.prj"); 
    } 
    catch (Exception e) { 
      return; 
    } 
    URLName name = (URLName)project.names.elements().nextElement(); 
    FileURLChange c; 
    try { 
      c = new FileURLChange(name.url); 
    } 
    catch (UnknowFileURL e) { 
      return; 
    } 
    DealHTMLTagSaveURL get = new DealHTMLTagSaveURL(new Project(), c); 
     
    try { 
      URL url = new URL(name.url); 
      InputStreamReader in = new InputStreamReader(url.openStream()); 
       
      File f = new File(new File(project.mainDir), name.name); 
      OutputStreamWriter writer = new OutputStreamWriter( 
        new FileOutputStream(f)); 
      DealHTMLStream.dealHTMLStream(in, writer, get); 
    } 
    catch (IOException e) { 
      System.err.println("IO error!"); 
      return; 
    } 
  } 
}