这些程序可以运行吗
yu520 2006-04-12 11:59:56 //===================Program Description========================
//程序名称:Bfs1.java
//程序目的:设计一个广度优先搜索法来搜索图形并生成 XML 文件的程序
//编程语言:Java
//运行环境:WinXP
//Written
//===========================================================
import java.io.*;
public class Bfs1
{
public static int VertexNum=11;
public static int[][] Graph=new int[VertexNum][VertexNum];
public static String line=new String();
public static String[] Label=
{"","Label1","Label2","Label3","Label4","Label5","Label6","Label7","Label8","Label9","La bel10"};
public static int[][] Level =new int[VertexNum][VertexNum];//记录子节点情况,看谁是谁的子节点
public static int[] NodeType=new int[VertexNum];//看节点类型是原子的还是复杂的
public static String[]AtomicData=
{"","","","","","Data5","Data6","Data7","Data8","Data9","Data10"};
public static void main(String args[])
{
int Source;
int Destination;
int i,j;
ConsoleReader console = new ConsoleReader(System.in);
for(i=0;i<VertexNum;i++)
for(j=0;j<VertexNum;j++)
Graph[i][j]=0;
while(true)
{
System.out.print("Please input the Edge's source(-1 for Exit):");
Source=console.readInt();
if(Source==-1)
break;
System.out.print("Please input the Edge's Destination:");
Destination=console.readInt();
if(Source==Destination)
System.out.println("@Error@: Self Loop!!");
else
{ if(Source>=VertexNum||Destination>=VertexNum)
System.out.println("@Error@: Out of range!!");
else
CreateMGraph(Source,Destination);
}
}
System.out.println("##Graph##");
PrintMGraph();
System.out.println("Brach-First-Search : ");
System.out.print("[BEGIN]==>");
BFS(1);
for(i=0;i<VertexNum;i++)
for(j=0;j<VertexNum;j++)
{
if(Graph[i][j]!=0)
NodeType[i]=1;
}//1 为复杂节点
System.out.println("[END]");
ToXml(1);
}
public static void BFS(int Vertex)
{
int Pointer;
QueueArray Data=new QueueArray();
int i;
Data.AddQueue(Vertex);
System.out.print("["+Vertex+"==>");
while(Data.Front != Data.Rear)
{
Vertex=Data.DelQueue();
for(i=1;i<VertexNum;i++)
{
if(Graph[Vertex][i]==1)
{
Data.AddQueue(i);
Level[i][Vertex]=1;// i 为 Vertex 的子节点
System.out.print("["+i+"]==>");
}
}
}
}
public static void PrintMGraph()
{
int i,j;
System.out.print("Vertice");
for(i=0;i<VertexNum;i++)
System.out.print(" "+i+" ");
System.out.println("");
for(i=0;i<VertexNum;i++)
{
System.out.print(" "+i+" ");
for(j=0;j<VertexNum;j++)
System.out.print(" "+Graph[i][j]+" ");
System.out.println("");
}
}
public static void CreateMGraph(int Vertice1,int Vertice2)
{
Graph[Vertice1][Vertice2]=1;
}
public static void ToXml(int i)
{
if(i==1)
System.out.println("<?xml version=\"1.0\"?>\n");
if(NodeType[i]==0)
System.out.print("<"+Label[i]+">"+AtomicData[i]);
else
{
System.out.println("<"+Label[i]+">");
for(int j=0;j<VertexNum;j++)
{
if(Level[j][i]==1)
ToXml(j);
}
}
System.out.println("</"+Label[i]+">");
}
}
class QueueArray
{
int MaxSize=10;
int[]AQueue=new int[MaxSize];
int Front=-1;
int Rear=-1;
public void Print()
{
int i;
System.out.print("The Queue Content:");
for(i=Front+1;i<Rear+1;i++)
System.out.print("["+AQueue[i]+"]");
System.out.println("");
}
public voidAddQueue(int Value)
{
int i;
if(Rear>=MaxSize)
System.out.println("The Queue is full!!");
else
{
Rear++;
AQueue[Rear]=Value;
}
}
public int DelQueue()
{
int Temp;
if(Front==Rear)
{
System.out.println("The stack is empty!!");
return -1;
}
Front++;
Temp=AQueue[Front];
return Temp;
}
}
//===================Program Description========================
//程序名称:WsPhisics1.java
//程序目的:为处理 HTML, XHTML, XML 和 XSL 文件提供函数而设计的类,具有//解 析,输入/输出,转换,清理文档的功能
//编程语言:Java //运行环境:WinXP
//Written
//===========================================================
// 引入解析 xml 文档的包
import org.xml.sax.*;
import org.w3c.dom.*;
import org.apache.xerces.dom.*;
import org.apache.xerces.parsers.*;
import org.apache.xml.serialize.*;
// 引入处理 XSL 转换的包
import org.apache.xalan.xslt.*;
import org.apache.xalan.xpath.*;
// 引入相关 java 包
import java.io.*;
import java.util.*;
import java.net.*;
public class Wsphisics1 {
public static Document parseXML(String url) throws WsException {
return parseXMLFURL(conString(url));
}//前两次调用 1
public static Document parseXMLFURL(URL url) throws WsException {
try {
URLConnection inConnection = url.openConnection();
InputSource is = new InputSource(inConnection.getInputStream());
return parseXMLFIS(is);
} catch (IOException ioe) {
throw new WsException("无法读取", ioe);
}
}//前两次调用 2
// 解析
private static Document parseXMLFIS(InputSource is) throws WsException {
Document doc = null;
try {
DOMParser parser = new DOMParser();
parser.parse(is);
doc = parser.getDocument();
} catch (IOException ioe) {
throw new WsException("无法读取", ioe);
} catch (SAXException saxe) {
throw new WsException("无法解析", saxe);
}
return doc;
}//前两次调用 3 第三次调用3
//转换
public static Document transXML(Document xmlDoc, Document xslDoc) throws WsException {
try {
XSLTInputSource xmlIn = new XSLTInputSource(xmlDoc);
XSLTInputSource xslIn = new XSLTInputSource(xslDoc);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XSLTResultTarget xmlOut = new XSLTResultTarget(baos);
XSLTProcessor processor = XSLTProcessorFactory.getProcessor();
processor.process(xmlIn, xslIn, xmlOut);
baos.close();
String result = baos.toString();
return parseXMLFS(result);
} catch (SAXException saxe) {
throw new WsException("无法转换", saxe);
} catch (IOException ioe) {
throw new WsException("无法转换", ioe);
}
}//第三次调用 1
public static Document parseXMLFS(String source) throws WsException {
InputSource is = new InputSource(new StringReader(source));
return parseXMLFIS(is); }//第三次调用 2
//输出
public static void outputXML(Document doc, String fileName) throws WsException {
try {
OutputFormat of = new OutputFormat(doc);
of.setIndenting(true);
File f = new File(fileName);
FileOutputStream fos = new FileOutputStream(f);
XMLSerializer serializer = new XMLSerializer(fos, of);
serializer.serialize(doc);
fos.close();
} catch (IOException ioe) {
throw new WsException("无法写入", ioe);
}
}// 第四次调用 1
private static URL conString(String url) throws WsException {
try {
return new URL(url);
} catch (MalformedURLException murle) {
throw new WsException(url + " 无效的 URL", murle);
}
}//前两次调用 2(并)
//利用 xsl 文件对 xml 文档进行转换,结果以 xml 文档形式输出
public static void main(String args[]) {
try {
Document xhtml = Wsphisics1.parseXML("file:///D:/ws/XML 与 XSL/ws.xml");
Document xsl = Wsphisics1.parseXML("file:///D:/ws/XML 与 XSL/ws.xsl");
Document xml = Wsphisics1.transXML(xhtml, xsl);
Wsphisics1.outputXML(xml,"result.xml");
} catch (WsException xmle) {
//运行
}
}
}
//用于 Wsphisics1 的异常管理类
import java.io.*;
public class WsException extends Exception {
private Exception innerException;
public WsException() { super(); innerException = null; }
public WsException(String message) { super(message); innerException = null; }
public WsException(String message, Exception innerException) {
super(message);
this.innerException = innerException;
}
public String getMessage() {
String message = super.getMessage() + "\n" +
(innerException == null ? "" : innerException.getMessage());
return message;
}
public void printStackTrace(PrintStream ps) {
super.printStackTrace(ps);
innerException.printStackTrace(ps);
}
}