📄 generatexml.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 + -