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;
}
}
}