struts开发实践—读写xml实例

翻译|其它|编辑:郝浩|2004-10-28 10:24:00.000|阅读 2521 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


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**********************************/


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP