⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 encodexml.java

📁 使用模式映射方法
💻 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 + -