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

📄 generatexml.java

📁 本人的毕业设计
💻 JAVA
字号:
/*
 * GenerateXML.java
 *
 * Created on 2007年5月9日, 下午10:00
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package XRSystem.Process;

/**
 *
 * @author 王刚
 */

import java.lang.*;
import java.util.*;
import java.sql.*;
import javax.swing.*;
import java.io.*;

import org.jdom.*;
import org.jdom.output.*;

import XRSystem.Process.*;
import XRSystem.DataAccess.*;
import XRSystem.Util.*;

public class GenerateXML {
    
    private String DocumentName;
    private int DocumentID;
    private String XMLString;
    
    /** Creates a new instance of GenerateXML */
    public GenerateXML(String DocumentName) {
        this.DocumentName = DocumentName;
    }
    
    public GenerateXML(){
        
    }
    
    public String GetDocumentName() {
        return DocumentName;
    }
    
    private void GetDocumentID() {
        String SQLString = "SELECT DocumentID FROM Document WHERE DocumentName ="+"'"+this.GetDocumentName()+"'";
        ResultSet IDSet = null;
        //int DocumentID;
        try{
            IDSet = new SQLResultSet().ExecuteSQL(SQLString);
            while(IDSet.next())
                DocumentID = IDSet.getInt(1);
        }catch(SQLException e){e.printStackTrace();} catch(Exception e){e.printStackTrace();}
    }
    
    private ArrayList<ElementNode> ProcessData(String SQL) {
        ResultSet rs = null;
        ArrayList<ElementNode> ElementList = new ArrayList<ElementNode>();
        String SQLString=SQL;
        try{
            rs = new SQLResultSet().ExecuteSQL(SQLString);
            while(rs.next()) {
                XRSystem.Util.ElementNode TempNode = new ElementNode(DocumentID,rs.getInt(1),rs.getInt(2),rs.getString(3),rs.getInt(4),rs.getInt(5));
                ElementList.add(TempNode);
            }
        }catch(SQLException e){e.printStackTrace();} catch(Exception e){e.printStackTrace();}
        return ElementList;
    }
    
    private ArrayList<TextNode> ProcessText(int TEPre) {
        ArrayList<TextNode> TextList =  new ArrayList<TextNode>();
        String TextSQL="SELECT TextID,ElementPre,ElementPost,TextContent FROM [Text] WHERE ElementPre="+TEPre+" AND DocumentID="+DocumentID;
        ResultSet rsT = null;
        try{
            rsT = new SQLResultSet().ExecuteSQL(TextSQL);
            while(rsT.next()){
                TextNode TempText = new TextNode(DocumentID,rsT.getInt(1),rsT.getInt(2),rsT.getInt(3),rsT.getString(4));
                TextList.add(TempText);
            }
        }catch(SQLException e){e.printStackTrace();} catch(Exception e){e.printStackTrace();}
        return TextList;
    }
    
    private ArrayList<AttributeNode> ProcessAttribute(int AEPre) {
        ArrayList<AttributeNode> AttributeList =  new ArrayList<AttributeNode>();
        String AttributeSQL="SELECT AttributeID,ElementPre,ElementPost,AttributeName,AttributeValue FROM Attribute WHERE ElementPre="+AEPre+" AND DocumentID="+DocumentID;
        ResultSet rsA = null;
        try{
            rsA = new SQLResultSet().ExecuteSQL(AttributeSQL);
            while(rsA.next()) {
                AttributeNode TempAttribute = new AttributeNode(DocumentID,rsA.getInt(1),rsA.getInt(2),rsA.getInt(3),rsA.getString(4),rsA.getString(5));
                AttributeList.add(TempAttribute);
            }
        }catch(SQLException e){e.printStackTrace();} catch(Exception e){e.printStackTrace();}
        return AttributeList;
    }
    
    public String ConstructXML() {        
        this.GetDocumentID();
        String RootSQL="SELECT ElementPre,ElementPost,ElementTag,ParentPre,ParentPost FROM Element WHERE ElementPre=1 AND DocumentID="+DocumentID;
        ArrayList<ElementNode> TopList = new ArrayList<ElementNode>();
        TopList =ProcessData(RootSQL) ;
        String RootName = TopList.get(0).GetTagName();
        Element RootElement = new Element(RootName);
        int RootPre = TopList.get(0).GetElementPre();
        Document XMLDocument = new Document(RootElement);
        ArrayList<AttributeNode> AList1 = new ArrayList<AttributeNode>();
        ArrayList<TextNode> TList1 = new ArrayList<TextNode>();
        AList1= ProcessAttribute(RootPre);
        TList1= ProcessText(RootPre);
        for(int A1=0;A1<AList1.size();A1++) {
            RootElement.setAttribute(AList1.get(A1).GetAttributeName(),AList1.get(A1).GetAttributeValue());
        }
        for(int T1=0;T1<TList1.size();T1++){
            RootElement.setText(TList1.get(T1).GetTextContent());
        }
        String SecondSQL="SELECT ElementPre,ElementPost,ElementTag,ParentPre,ParentPost FROM Element WHERE ParentPre="+RootPre+" AND DocumentID="+DocumentID;
        ArrayList<ElementNode> SecondList = new ArrayList<ElementNode>();
        SecondList = ProcessData(SecondSQL);
        for(int x=0;x<SecondList.size();x++) {
            ArrayList<AttributeNode> AList3 = new ArrayList<AttributeNode>();
            ArrayList<TextNode> TList3 = new ArrayList<TextNode>();            
            Element ParentElement = new Element(SecondList.get(x).GetTagName());
            AList3 = ProcessAttribute(SecondList.get(x).GetElementPre());
            TList3= ProcessText(SecondList.get(x).GetElementPre());
            for(int A3=0;A3<AList3.size();A3++) {
                ParentElement.setAttribute(AList3.get(A3).GetAttributeName(),AList3.get(A3).GetAttributeValue());
            }
            for(int T3=0;T3<TList3.size();T3++){
                String TValue = TList3.get(T3).GetTextContent();
                ParentElement.setText(TValue);
            }
            String LowSQL="SELECT ElementPre,ElementPost,ElementTag,ParentPre,ParentPost FROM Element WHERE ParentPre="+SecondList.get(x).GetElementPre()+" AND DocumentID="+DocumentID;
            ArrayList<ElementNode> ChildList = new ArrayList<ElementNode>();
            ChildList = ProcessData(LowSQL);
            Element SecondLevel = RecursiveConstruct(ParentElement,ChildList);
            XMLDocument.getRootElement().addContent(SecondLevel);
        }
        XMLOutputter outp = new XMLOutputter(Format.getPrettyFormat()); //格式化输出,产生缩进和换行
        
        Format format = outp.getFormat();
        format.setEncoding("GB2312"); //设置语言
        format.setExpandEmptyElements(true); //设置输出空元素格式
        outp.setFormat(format);
        try{
            //outp.output(XMLDocument, new FileOutputStream("GenerateXML.XML"));
            //System.out.println(outp.outputString(XMLDocument));
            XMLString = outp.outputString(XMLDocument);
        } catch(Exception e){e.printStackTrace();} //输出XML文档
        //System.out.print(XMLString);
        return XMLString;
    }    
 
    private Element RecursiveConstruct(Element TempElem,ArrayList<ElementNode> TempList) {
        Element ThisElem=TempElem;
        ArrayList<AttributeNode> AList2 = new ArrayList<AttributeNode>();
        ArrayList<TextNode> TList2 = new ArrayList<TextNode>();
        for(int m=0;m<TempList.size();m++) {
            Element ChildElement = new Element(TempList.get(m).GetTagName());
            AList2 = ProcessAttribute(TempList.get(m).GetElementPre());
            TList2= ProcessText(TempList.get(m).GetElementPre());
            for(int A2=0;A2<AList2.size();A2++) {
                ChildElement.setAttribute(AList2.get(A2).GetAttributeName(),AList2.get(A2).GetAttributeValue());
            }
            for(int T2=0;T2<TList2.size();T2++){
                String TValue = TList2.get(T2).GetTextContent();
                ChildElement.setText(TValue);
            }
            String ChildSQL="SELECT ElementPre,ElementPost,ElementTag,ParentPre,ParentPost FROM Element WHERE ParentPre="+TempList.get(m).GetElementPre()+" AND DocumentID="+DocumentID;
            ArrayList<ElementNode> TNList = new ArrayList<ElementNode>();
            TNList = ProcessData(ChildSQL);
            ThisElem.addContent(RecursiveConstruct(ChildElement,TNList));
        }
        return ThisElem;
    }
    
    public static void main(String[] args) {
        new GenerateXML("Issue.xml").ConstructXML();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -