struts开发实践—读写xml实例
|
--文章源自一位网友 struts开发实践—读写xml实例 1. 准备工作:去java.sun.com下载org.w3c.dom包,将下载的包放在WEB-INF/lib目录下。包的文档说明可以参考http://java.sun.com/xml/jaxp/dist/1.1/docs/api/org/w3c/dom/package-summary.html。 2. 本案主要功能是完成table的表头显示字段的设置。 文件包括: 1) print.xml:将字段属性写入xml文件(放入web-inf目录下) 2) ReadWritePrintXML.java :print.xml的接口类: 3) PrintReadAction.java :print.xml的Action 4)PrintSetAction.java:写print.xml的Action 5) PrintForm:print选择的对象ActionForm
/****************print.xml代码begin******************************************/ <?xml version="1.0" encoding="UTF-8" ?> <TBL_EMPLOYEE> - <Field fieldName="employeeId" printName="职工ID"> <ifPrint>0</ifPrint> </Field> - <Field fieldName="employeeBasicInfo.deptName" printName="部门"> <ifPrint>1</ifPrint> </Field> <Field fieldName="employeeBasicInfo.employeeName" printName="职工姓名"> <ifPrint>1</ifPrint> </Field> - <Field fieldName="employeeBasicInfo.sex" printName="性别"> <ifPrint>1</ifPrint> </Field> - <Field fieldName="employeeBasicInfo.nation" printName="民族"> <ifPrint>1</ifPrint> </Field> - <Field fieldName="employeeBasicInfo.birthDate" printName="出生日期"> <ifPrint>0</ifPrint> </Field> - <Field fieldName="employeeBasicInfo.ages" printName="年龄"> <ifPrint>1</ifPrint> </Field> - <Field fieldName="employeeBasicInfo.workYear" printName="工龄"> <ifPrint>1</ifPrint> </Field> - <Field fieldName="employeeBasicInfo.idCard" printName="身份证号"> <ifPrint>1</ifPrint> </Field> - <Field fieldName="employeeBasicInfo.workDate" printName="参加工作时间"> <ifPrint>0</ifPrint> </Field> - <Field fieldName="employeeBasicInfo.politic" printName="政治面貌"> <ifPrint>1</ifPrint> </Field> - <Field fieldName="employeeBasicInfo.parchment" printName="文化程度"> <ifPrint>1</ifPrint> </Field> - <Field fieldName="nativePlace" printName="籍贯"> <ifPrint>0</ifPrint> </Field> - <Field fieldName="registerPlace" printName="户口所在地"> <ifPrint>0</ifPrint> </Field> - <Field fieldName="telephone" printName="联系电话"> <ifPrint>0</ifPrint> </Field> - <Field fieldName="houseAddress" printName="家庭住址"> <ifPrint>0</ifPrint> </Field> </TBL_EMPLOYEE> /**********************print.xml代码end***************************************/ /**********************PrintForm.java Begin***************************************/ package test;
import org.apache.struts.action.*; import javax.servlet.http.*; /** * 打印form */ public class PrintForm extends ActionForm { /**字段名*/ private String fieldName=""; /**打印名*/ private String printName=""; /**是否打印*/ private int ifPrint=0; public void setFieldName(String fieldName) { this.fieldName = fieldName; } public String getFieldName() { return fieldName; } public void setPrintName(String printName) { this.printName = printName; } public String getPrintName() { return printName; } public void setIfPrint(int ifPrint) { this.ifPrint = ifPrint; } public int getIfPrint() { return ifPrint; }
public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) { /**@todo: finish this method, this is just the skeleton.*/ return null; } public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) { } } /****************printForm.java代码end******************************/
/****************ReadWritePrintXML.java代码Begin******************************/ package test;
import java.io.*; import java.util.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.crimson.tree.XmlDocument; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; /** * 读写printxml */ public class ReadWritePrintXML { /** * 读printxml * @param path:the path of xml put in * @return * @throws Exception */ public ArrayList readXMLFile(String path) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; ArrayList list = new ArrayList(); String[] data = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) { pce.printStackTrace(); } Document doc = null; try { doc = db.parse(path); } catch (DOMException dom) { dom.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); } Element root = doc.getDocumentElement(); NodeList fields = root.getElementsByTagName("Field"); for (int i = 0; i < fields.getLength(); i++) { Element field = (Element) fields.item(i); PrintSelectForm printSelectForm = new PrintSelectForm(); printSelectForm.setFieldName(field.getAttribute("fieldName")); printSelectForm.setPrintName(field.getAttribute("printName")); NodeList datas = field.getElementsByTagName("ifPrint"); if (datas.getLength() == 1) { Element e = (Element) datas.item(0); Text t = (Text) e.getFirstChild(); printSelectForm.setIfPrint(t.getNodeValue()); } list.add(printSelectForm); } return list; }
/** * 写xml * @param select:the selected id you set * @param path:the path of xml put in * @throws Exception */ public void writeXMLFile(String[] select, String path) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) { pce.printStackTrace(); } Document doc = null; try { doc = db.parse(path); } catch (DOMException dom) { dom.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); }
Element root = doc.getDocumentElement(); NodeList fields = root.getElementsByTagName("Field"); for (int j = 0; j < select.length; j++) { for (int i = 0; i < fields.getLength(); i++) { Element field = (Element) fields.item(i); if (field.getAttribute("fieldName").equals(select[j])) { NodeList ifPrints = field.getElementsByTagName("ifPrint"); if (ifPrints.getLength() == 1) { Element e = (Element) ifPrints.item(0); Text t = (Text) e.getFirstChild(); t.setNodeValue("1"); } } } } TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new java.io.File(path)); transformer.transform(source, result); } /** * 初始化xml * @param path:the path of xml * @throws Exception */ public void initialXMLFile(String path) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException pce) { pce.printStackTrace(); } Document doc = null; try { doc = db.parse(path); } catch (DOMException dom) { dom.printStackTrace(); } catch (IOException ioe) { ioe.printStackTrace(); }
Element root = doc.getDocumentElement(); NodeList fields = root.getElementsByTagName("Field"); for (int i = 0; i < fields.getLength(); i++) { Element field = (Element) fields.item(i); NodeList ifPrints = field.getElementsByTagName("ifPrint"); if (ifPrints.getLength() == 1) { Element e = (Element) ifPrints.item(0); Text t = (Text) e.getFirstChild(); t.setNodeValue("0"); }
} TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new java.io.File(path)); transformer.transform(source, result);
}
} /****************ReadWritePrintXML.java代码End********************************/ /****************PrintReadAction.java代码Begin***********************************/ package test;
import org.apache.struts.action.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import java.io.IOException;
/** * 读取print.xml的字段信息,供选择 */ public class PrintReadAction extends Action { public ActionForward perform(ActionMapping mapping,ActionForm form, HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException { ActionErrors errors = new ActionErrors(); String[] ifPrint=null; String path=request.getRealPath("/")+"/WEB-INF/print.xml"; try { ReadWritePrintXML readwrite=new ReadWritePrintXML(); Collection colField = readwrite.readXMLFile(path); request.setAttribute(BeanNames.TABLEFIELD_LIST, colField); return mapping.findForward("success"); } catch (Throwable e) { e.printStackTrace(); ActionError error = new ActionError(e.getMessage()); errors.add(ActionErrors.GLOBAL_ERROR, error);
} saveErrors(request,errors); return new ActionForward(mapping.getInput()); } } /****************PrintReadAction.java代码End**********************************/ /****************PrintSetAction.java代码Begin*********************************/ package test;
import org.apache.struts.action.*; import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.util.*;
/** * 打印字段设置回写print.xml文件 */ public class PrintSetAction extends Action { public ActionForward perform(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ ActionErrors errors = new ActionErrors(); String[] multiSelect=request.getParameterValues("multiSelect"); ArrayList colField=null; String path=request.getRealPath("/")+"/WEB-INF/print.xml"; try{ ReadWritePrintXML readwrite = new ReadWritePrintXML(); readwrite.initialXMLFile(path); readwrite.writeXMLFile(multiSelect,path); return null; } catch (Throwable e) { e.printStackTrace(); ActionError error = new ActionError(e.getMessage()); errors.add(ActionErrors.GLOBAL_ERROR, error);
} saveErrors(request, errors); return new ActionForward(mapping.getInput()); } }
/****************PrintSetAction.java代码End**********************************/ |
struts开发实践—读写xml实例
最新推荐文章于 2022-06-10 11:25:09 发布