struts开发实践—读写xml实例

类别:Java 点击:0 评论:0 推荐:
--文章源自一位网友


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

 

 

 

 

 

本文地址:http://com.8s8s.com/it/it14786.htm