📄 encodexml.java
字号:
/*
* EncodeXML.java
*
* Created on 2007年3月2日, 下午2:58
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package XRSystem.Process;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.output.*;
import java.io.*;
import javax.swing.tree.*;
import java.util.*;
import java.lang.*;
import XRSystem.Util.*;
/**
*
* @author 王刚
*/
public class EncodeXML {
/** Creates a new instance of EncodeXML */
private DefaultMutableTreeNode XMLTree;// = new
private Map<String,String> OrderMap = new HashMap<String,String>();
private Map<String,DietzEncode> ParentMap = new HashMap<String,DietzEncode>();
private int ElementCount = 1;
private Map<String,String> ReadXML(String FileName) {
SAXBuilder builder = new SAXBuilder();
int PostOrder = 1;
try {
Document doc = builder.build(FileName);
Element root = doc.getRootElement();
ArrayList<Element> SecondList = new ArrayList<Element>();
List TempList = root.getContent();
ElementCount+=root.getContentSize();
Iterator iterator = TempList.iterator();
while (iterator.hasNext()) {
Object o = iterator.next();
if(o instanceof Element) {
SecondList.add((Element)o);
}
}
XMLTree = new DefaultMutableTreeNode(root);
for(int m=0;m<SecondList.size();m++) {
XMLTree.add(MakeXMLTree(SecondList.get(m)));
}
}
// indicates a well-formedness error
catch (JDOMException e) {
System.out.println(e.getMessage());
} catch (IOException e) {
System.out.println(e);
}
Enumeration myEnumeration1 =XMLTree.postorderEnumeration();
Enumeration myEnumeration2 =XMLTree.preorderEnumeration();
OrderMap = FunOrderMap(myEnumeration1);
//ViewMapInfo(OrderMap);
ParentMap = FunParentMap(myEnumeration2,OrderMap);
//System.out.println("_______________________________________");
return OrderMap;
}
public Map<String,String> GetOrderMap(String FileName) {
// Map<String,String> MyOrderMap = new HashMap<String,String>();
ReadXML(FileName);
return OrderMap;
}
public Map<String,DietzEncode> GetParentMap(String FileName) {
//Map<String,String> MyParentMap = new HashMap<String,String>();
//Enumeration myEnumeration2 =XMLTree.postorderEnumeration();
ReadXML(FileName);
return ParentMap;
}
private void ViewMapInfo(Map<String,String> TempMap) {
for(Map.Entry<String,String> ThisEntry : TempMap.entrySet() ) {
System.out.println("先序编码:"+ThisEntry.getKey()+" 后序编码:"+ThisEntry.getValue());
}
}
private DefaultMutableTreeNode MakeXMLTree(Element TempNode) {
DefaultMutableTreeNode SecondLevel = new DefaultMutableTreeNode(TempNode);
List ChildList = TempNode.getContent();
ArrayList<Element> ElemList = new ArrayList<Element>();
Iterator iterator = ChildList.iterator();
while (iterator.hasNext()) {
Object o = iterator.next();
if(o instanceof Element) {
ElemList.add((Element)o);
}
}
for(int m=0;m<ElemList.size();m++) {
SecondLevel.add(MakeXMLTree(ElemList.get(m)));
}
return SecondLevel;
}
private Map<String,String> FunOrderMap(Enumeration Enum){
Map<String,String> OMap = new HashMap<String,String>();
int EPostOrder=1;
while(Enum.hasMoreElements()) {
Object OE = Enum.nextElement();
String ChildElement = OE.toString();
DefaultMutableTreeNode TE = (DefaultMutableTreeNode)OE;
Element ElementNode = ((Element)TE.getUserObject());
try{
if((TE.getParent())!=null){
//ParentPre=Integer.valueOf(((Element)(((DefaultMutableTreeNode)(TE.getParent())).getUserObject())).getAttributeValue("PreOrder"));
OMap.put(ElementNode.getAttributeValue("PreOrder"),String.valueOf(EPostOrder));
EPostOrder++;
} else{
OMap.put(ElementNode.getAttributeValue("PreOrder"),String.valueOf(EPostOrder));
ElementCount = EPostOrder+1;
}
}catch(Exception e) {
e.printStackTrace();
}
}
return OMap;
}
private Map<String,DietzEncode> FunParentMap(Enumeration Enum,Map<String,String> NMap){
Map<String,DietzEncode> PMap = new HashMap<String,DietzEncode>();
int PPre=0,PPost=0;
String CPre;
DietzEncode ThisDietz ;
while(Enum.hasMoreElements()) {
Object OE = Enum.nextElement();
String ChildElement = OE.toString();
DefaultMutableTreeNode TE = (DefaultMutableTreeNode)OE;
Element ElementNode = ((Element)TE.getUserObject());
try{
if((TE.getParent())!=null){
CPre = ElementNode.getAttributeValue("PreOrder");
PPre=Integer.valueOf(((Element)(((DefaultMutableTreeNode)(TE.getParent())).getUserObject())).getAttributeValue("PreOrder"));
PPost = Integer.valueOf(NMap.get(String.valueOf(PPre)));
ThisDietz = new DietzEncode(PPre,PPost);
PMap.put(CPre,ThisDietz);
} else{
CPre = ElementNode.getAttributeValue("PreOrder");
ThisDietz = new DietzEncode(0,ElementCount);
PMap.put(CPre,ThisDietz);
}
}catch(Exception e) {
e.printStackTrace();
}
}
return PMap;
}
/*
public static void main(String[] args)
{
new EncodeXML().ViewMapInfo(OrderMap);
new EncodeXML().ViewMapInfo(ParentMap);
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -