📄 gdparsexml.java
字号:
package com.gd.mvc.util;
import java.io.File;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class GdParseXml {
private Document document;//获取指定Xml的document
private String path;//获取从页面传来的访问路径
private String action;//获取从页面传来的动作
private String forwardJsp;//获取Xml设定的返回的页面
private String forwardJspPath;//获取Xml设定的返回页面的path
private String methodForwardJsp;//获取Xml中方法对应的forward
private String actionName; //获取Xml中访问路径对应的actionName
private List voId = new ArrayList();//获取Xml中设定的voId
private List voClass = new ArrayList();//获取Xml中设定的voClass
private List voType = new ArrayList();//获取Xml中设定的voType
private List voValidate = new ArrayList();//获取Xml中设定的voValidate
private List voTable = new ArrayList();//获取Xml中设定的voTable
private String method;//获取Xml中对应的方法
private String prefix;//获取Xml中设定的页面的前缀
private String suffix;//获取Xml中设定的页面后缀
private String extendsAction;//获取Xml中设定的是否继承GdAction
//从文件读取XML,输入文件名,返回XML文档
public void read(String fileName) throws MalformedURLException, DocumentException {
SAXReader reader = new SAXReader();
document = reader.read(new File(fileName));
}
//获取根节点
public Element getRootElement(Document doc){
return doc.getRootElement();
}
/**
* 用来解析此架构的xml档,产生对应的参数,即可在bean中设定VO,也可以在Page中设定VO
* @return void
*/
public void parseXml() {
List listPathAttribute = document.selectNodes("/nancy-config/page/@path" ); //获取所有page的path属性
List listPageElement = document.selectNodes("/nancy-config/page" );//获取所有的page
Iterator iteratorListPathAttribute = listPathAttribute.iterator();
Iterator iteratorPageElement = listPageElement.iterator();
int m = 0;//存放VO的key
int i = 0;//用于VO的key值递增
//假如Xml中有设定page和page的path属性
while(iteratorListPathAttribute.hasNext() && iteratorPageElement.hasNext()) {
Attribute attribute = (Attribute)iteratorListPathAttribute.next();//获取第一个path属性
Element element = (Element)iteratorPageElement.next();//获取第一个page下面的元素
Iterator iteratorForward = element.elementIterator("forward");//获取第一个page下面的forward元素
Iterator iteratorValueObject = element.elementIterator("valueObject");//获取第一个page下面的valueObject元素
Iterator iteratorAction = element.elementIterator("action");//获取第一个page下面的action元素
if(attribute.getValue().trim().equals(path)) {//如果获得的path和xml配置的一样
actionName = element.attributeValue("actionName");//获取该页面即path对应的actionName
while(iteratorForward.hasNext()) {//就取得该path下所有要返回的页面
Element elementForward = (Element)iteratorForward.next();
forwardJsp = elementForward.attributeValue("name");//获取forwardJsp的名称
forwardJspPath = elementForward.attributeValue("path");//获取forwardJsp的的路径
}
while(iteratorValueObject.hasNext()) {//获得valueObject的属性
m = i++;//用于VO的key值递增
Element elementValueObject = (Element)iteratorValueObject.next();
voId.add(m, elementValueObject.attributeValue("id"));//获取VO的id
voClass.add(m, elementValueObject.attributeValue("class"));//获取VO的class
voType.add(m, elementValueObject.attributeValue("type"));//获取该VO是单笔还是多笔
voValidate.add(m, elementValueObject.attributeValue("validate"));//获取该VO是否验证
voTable.add(m, elementValueObject.attributeValue("table"));//获取VO对应的table
}
while(iteratorAction.hasNext()) {
Element elementAction = (Element)iteratorAction.next();
String actionFlag = elementAction.attributeValue("action").trim();
if (actionFlag.equals(action)) {//如果action与页面上的相同
method = elementAction.attributeValue("method");//就获取该action相对应的method
methodForwardJsp = elementAction.attributeValue("forward");//就获取该action相对应的forward
break;
}
}
break;
}
}
List listBeanAttribute = document.selectNodes("/nancy-config/bean/@id" );//获取所有bean的id属性
List listBeanElement = document.selectNodes("/nancy-config/bean" );//获取所有的bean
Iterator iteratorBeanPathAttribute = listBeanAttribute.iterator();
Iterator iteratorBeanElement = listBeanElement.iterator();
//假如Xml中有设定bean和bean的id属性
while(iteratorBeanPathAttribute.hasNext() && iteratorBeanElement.hasNext()) {
Attribute attribute = (Attribute)iteratorBeanPathAttribute.next();
Element element = (Element)iteratorBeanElement.next();
if(attribute.getValue().equals("viewResolver")) {//假如有id为viewResolver的bean
Iterator iteratorPrefix = element.elementIterator("prefix");//获取id为viewResolver的bean下的prefix元素
Iterator iteratorSuffix = element.elementIterator("suffix");//获取id为viewResolver的bean下的suffix元素
Element elementPrefix = (Element)iteratorPrefix.next();
Element elementSuffix = (Element)iteratorSuffix.next();
prefix = elementPrefix.getText();//获得viewResolver指定的前缀prefix
suffix = elementSuffix.getText();//获得viewResolver指定的后缀suffix
}
if(attribute.getValue().equals("actionResolver")) {//假如有id为actionResolver的bean
Iterator iteratorExtends = element.elementIterator("extends");
Element elementExtends = (Element)iteratorExtends.next();
extendsAction = elementExtends.getText();//获得actionResolver指定的继承GdAction
}
if(attribute.getValue().equals("valueObjects")) {//假如有id为valueObjects的bean
Iterator iteratorValueObject = element.elementIterator("valueObject");
while(iteratorValueObject.hasNext()) {//获得valueObject的属性
m = i++;
Element elementValueObject = (Element)iteratorValueObject.next();
voId.add(m, elementValueObject.attributeValue("id"));//获取VO的id
voClass.add(m, elementValueObject.attributeValue("class"));//获取VO的class
voType.add(m, elementValueObject.attributeValue("type"));//获取该VO是单笔还是多笔
voValidate.add(m, elementValueObject.attributeValue("validate"));//获取该VO是否验证
voTable.add(m, elementValueObject.attributeValue("table"));//获取VO对应的table
}
}
}
}
/**获取action
* @return the action
*/
public String getAction() {
return action;
}
/**设定action
* @param action the action to set
*/
public void setAction(String action) {
this.action = action;
}
/**获取actionName
* @return the actionName
*/
public String getActionName() {
return actionName;
}
/**设定actionName
* @param actionName the actionName to set
*/
public void setActionName(String actionName) {
this.actionName = actionName;
}
/**获取document
* @return the document
*/
public Document getDocument() {
return document;
}
/**设定document
* @param document the document to set
*/
public void setDocument(Document document) {
this.document = document;
}
/**获取forwardJsp
* @return the forwardJsp
*/
public String getForwardJsp() {
return forwardJsp;
}
/**设定forwardJsp
* @param forwardJsp the forwardJsp to set
*/
public void setForwardJsp(String forwardJsp) {
this.forwardJsp = forwardJsp;
}
/**获取forwardJspPath
* @return the forwardJspPath
*/
public String getForwardJspPath() {
return forwardJspPath;
}
/**设定forwardJspPath
* @param forwardJspPath the forwardJspPath to set
*/
public void setForwardJspPath(String forwardJspPath) {
this.forwardJspPath = forwardJspPath;
}
/**获取method
* @return the method
*/
public String getMethod() {
return method;
}
/**设定method
* @param method the method to set
*/
public void setMethod(String method) {
this.method = method;
}
/**获取methodForwardJsp
* @return the methodForwardJsp
*/
public String getMethodForwardJsp() {
return methodForwardJsp;
}
/**设定methodForwardJsp
* @param methodForwardJsp the methodForwardJsp to set
*/
public void setMethodForwardJsp(String methodForwardJsp) {
this.methodForwardJsp = methodForwardJsp;
}
/**获取path
* @return the path
*/
public String getPath() {
return path;
}
/**设定path
* @param path the path to set
*/
public void setPath(String path) {
this.path = path;
}
/**获取prefix
* @return the prefix
*/
public String getPrefix() {
return prefix;
}
/**设定prefix
* @param prefix the prefix to set
*/
public void setPrefix(String prefix) {
this.prefix = prefix;
}
/**获取suffix
* @return the suffix
*/
public String getSuffix() {
return suffix;
}
/**设定suffix
* @param suffix the suffix to set
*/
public void setSuffix(String suffix) {
this.suffix = suffix;
}
/**获取voClass
* @return the voClass
*/
public List getVoClass() {
return voClass;
}
/**设定voClass
* @param voClass the voClass to set
*/
public void setVoClass(List voClass) {
this.voClass = voClass;
}
/**获取voId
* @return the voId
*/
public List getVoId() {
return voId;
}
/**设定voId
* @param voId the voId to set
*/
public void setVoId(List voId) {
this.voId = voId;
}
/**获取voType
* @return the voType
*/
public List getVoType() {
return voType;
}
/**设定voType
* @param voType the voType to set
*/
public void setVoType(List voType) {
this.voType = voType;
}
/**获取extendsAction
* @return the extendsAction
*/
public String getExtendsAction() {
return extendsAction;
}
/**设定extendsAction
* @param extendsAction the extendsAction to set
*/
public void setExtendsAction(String extendsAction) {
this.extendsAction = extendsAction;
}
/**获取voValidate
* @return the voValidate
*/
public List getVoValidate() {
return voValidate;
}
/**设定voValidate
* @param voValidate the voValidate to set
*/
public void setVoValidate(List voValidate) {
this.voValidate = voValidate;
}
/**获取voTable
* @return the voTable
*/
public List getVoTable() {
return voTable;
}
/**设定voTable
* @param voTable the voTable to set
*/
public void setVoTable(List voTable) {
this.voTable = voTable;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -