给一个类似的你看看吧/**
* Title:TreeTest.java
* Description : retrieve XML file, generate JavaScript tree
* Copyright: Copyright(c) 2002
* Company: Yi Neng
* @author Ke Deng
* @version 1.0
*/
package com.jfml.util.Tree;import org.apache.xerces.parsers.SAXParser;
import java.util.List;
import java.util.Vector;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
public class TreeTest
{
/**
*XML source path
*/
private String xmlPath;
public void setXmlPath(String path)
{
xmlPath=path;
}
public String getXmlPath()
{
return xmlPath;
}
/**
*XML tree depth
*/
private int treeDepth=0;
public int getTreeDepth()
{
return treeDepth;
}
/**
*Element's grade(层数)
*/
private int gradeNumber=0;
public int getGradeNumber()
{
return gradeNumber;
}
/**
*Save all elements
*/
private Vector vector=new Vector(); public static void main(String[] args)
{
if (args.length!=1)
{
System.out.println("Usage: java TreeTest [XML path]");
System.exit(0);
}
try
{
TreeTest t=new TreeTest();
t.setXmlPath(args[0]);
t.go(t.getXmlPath());
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void go(String path) throws Exception
{
/**
*XML parser
*/
SAXBuilder saxBuilder=new SAXBuilder("org.apache.xerces.parsers.SAXParser");
/**
*JDOM document
*/
Document jdomDoc=saxBuilder.build(path);
/**
*Root element
*/
Element rootElement=jdomDoc.getRootElement();
recurse(rootElement,gradeNumber);
viewVector();
System.out.println("XML tree's depth is "+treeDepth);
}
/**
*Recursion,get all elements
*/
public void recurse(Element element,int gradeNumber) throws Exception
{
System.out.println(gradeNumber+" "+element.getName());
// Save this element
vector.add(new TreeElement(gradeNumber,element));
if (treeDepth<gradeNumber)
{
treeDepth=gradeNumber;
}
if (element.hasChildren())
{
List list=element.getChildren();
for (int i=0;i<list.size();i++)
{
Element tmp=(Element)list.get(i);
recurse(tmp,gradeNumber+1);
}
}
}
/**
*Show the vector
*/
public void viewVector() throws Exception
{
System.out.println("This XML document has "+vector.size()+" elements."); for (int i=0;i<vector.size();i++)
{
TreeElement tmp=(TreeElement)vector.elementAt(i);
for (int j=0;j<=treeDepth;j++)
{
if (tmp.getKey()==j)
{
Element tmp2=(Element)tmp.getObject();
System.out.println(j+" "+tmp2.getName()+" "+"*****");//tmp2.getText());
}
}
}
}
}
/**
*Tree element object
*/
class TreeElement
{
private int key;
private Object object;
TreeElement(int i,Object o)
{
setKey(i);
setObject(o);
}
void setKey(int gradeNumber)
{
key=gradeNumber;
}
int getKey()
{
return key;
}
void setObject(Object obj)
{
object=obj;
}
Object getObject()
{
return object;
}
}
* Title:TreeTest.java
* Description : retrieve XML file, generate JavaScript tree
* Copyright: Copyright(c) 2002
* Company: Yi Neng
* @author Ke Deng
* @version 1.0
*/
package com.jfml.util.Tree;import org.apache.xerces.parsers.SAXParser;
import java.util.List;
import java.util.Vector;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
public class TreeTest
{
/**
*XML source path
*/
private String xmlPath;
public void setXmlPath(String path)
{
xmlPath=path;
}
public String getXmlPath()
{
return xmlPath;
}
/**
*XML tree depth
*/
private int treeDepth=0;
public int getTreeDepth()
{
return treeDepth;
}
/**
*Element's grade(层数)
*/
private int gradeNumber=0;
public int getGradeNumber()
{
return gradeNumber;
}
/**
*Save all elements
*/
private Vector vector=new Vector(); public static void main(String[] args)
{
if (args.length!=1)
{
System.out.println("Usage: java TreeTest [XML path]");
System.exit(0);
}
try
{
TreeTest t=new TreeTest();
t.setXmlPath(args[0]);
t.go(t.getXmlPath());
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void go(String path) throws Exception
{
/**
*XML parser
*/
SAXBuilder saxBuilder=new SAXBuilder("org.apache.xerces.parsers.SAXParser");
/**
*JDOM document
*/
Document jdomDoc=saxBuilder.build(path);
/**
*Root element
*/
Element rootElement=jdomDoc.getRootElement();
recurse(rootElement,gradeNumber);
viewVector();
System.out.println("XML tree's depth is "+treeDepth);
}
/**
*Recursion,get all elements
*/
public void recurse(Element element,int gradeNumber) throws Exception
{
System.out.println(gradeNumber+" "+element.getName());
// Save this element
vector.add(new TreeElement(gradeNumber,element));
if (treeDepth<gradeNumber)
{
treeDepth=gradeNumber;
}
if (element.hasChildren())
{
List list=element.getChildren();
for (int i=0;i<list.size();i++)
{
Element tmp=(Element)list.get(i);
recurse(tmp,gradeNumber+1);
}
}
}
/**
*Show the vector
*/
public void viewVector() throws Exception
{
System.out.println("This XML document has "+vector.size()+" elements."); for (int i=0;i<vector.size();i++)
{
TreeElement tmp=(TreeElement)vector.elementAt(i);
for (int j=0;j<=treeDepth;j++)
{
if (tmp.getKey()==j)
{
Element tmp2=(Element)tmp.getObject();
System.out.println(j+" "+tmp2.getName()+" "+"*****");//tmp2.getText());
}
}
}
}
}
/**
*Tree element object
*/
class TreeElement
{
private int key;
private Object object;
TreeElement(int i,Object o)
{
setKey(i);
setObject(o);
}
void setKey(int gradeNumber)
{
key=gradeNumber;
}
int getKey()
{
return key;
}
void setObject(Object obj)
{
object=obj;
}
Object getObject()
{
return object;
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货