读xml

/**
 * @#ConstantDAO.java
 * Copyright (C) 2009-2010 HereOnline Corporation
 */
package cn.com.hereonline.admin.dao;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;

import cn.com.hereonline.admin.common.Common;

/**
 * IConstantDAO的实现类
 * @author HereOnLine Corporation
 * @version 01 jun 28, 2009 作成
 */

public class ConstantDAO extends BaseDAO implements IConstantDAO {
	  
	File _FILEPATH = null;
	/**批量查询**/  
	public List<Constant> searchPerson() {  
		List<Constant> list = new ArrayList<Constant>();
		try {
			
			Element root = initDoc().getDocumentElement();
			NodeList pList = null;
			pList = root.getElementsByTagName("Constant");
			
			for (int i = 0; i < pList.getLength(); i++) {
				Element pE = (Element) pList.item(i);
				Constant person = new Constant();
				NodeList ids = pE.getElementsByTagName("value");
				if (ids.getLength() == 1) {
					Element e = (Element) ids.item(0);
					Text t = (Text) e.getFirstChild();
					person.setValue(t.getNodeValue());
				}
				NodeList names = pE.getElementsByTagName("name");
				if (names.getLength() == 1) {
					Element e = (Element) names.item(0);
					Text t = (Text) e.getFirstChild();
					person.setName(t.getNodeValue());
				}
				
				NodeList desc = pE.getElementsByTagName("desc");
				if(desc.getLength()==1){
                   Element e = (Element) desc.item(0);
                   Text t = (Text) e.getFirstChild();
                   person.setDesc(t.getNodeValue());
				}
				
				list.add(person);
			}
			
		} catch (Exception e) {
			System.out.println("ERROR!");
		}
		return list;
	}

	/**添加常量**/
	public void insertPerson(Constant p) {
		try {
			Document document = initDoc();
			Element root = document.getDocumentElement();
			Element person = null;
			person =  document.createElement("Constant");
			
			Element id = document.createElement("value");
			person.appendChild(id);
			Text tId = document.createTextNode(p.getValue());
			id.appendChild(tId);
			Element name = document.createElement("name");
			person.appendChild(name);
			Text tName = document.createTextNode(p.getName());
			name.appendChild(tName);

			root.appendChild(person);
			commitTransformer(document);
			//closeIO(document);
		} catch (ParserConfigurationException e) {
			System.out.println("ERROR!");
		} catch (SAXException e) {
			System.out.println("ERROR!");
		} catch (IOException e) {
			System.out.println("ERROR!");
		} catch (Exception e) {
			System.out.println("ERROR!");
		}
	}

	/**关闭IO**/
	private void closeIO(Document document) throws IOException {
		FileOutputStream outStream = new FileOutputStream("constant.xml");
		OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
		outWriter.close();
		outStream.close();
	}

	/**删除常量**/
	public void deletePerson(Constant p) {
		try {
			Document document = initDoc();
			NodeList pList = null ;
			Node del;
			pList = document.getElementsByTagName("Constant");
			
			for (int i = 0; i < pList.getLength(); i++) {
				Element element = (Element) pList.item(i);
				NodeList ids = element.getElementsByTagName("name");

				if (ids.getLength() == 1) {
					Element e = (Element) ids.item(0);
					Text t = (Text) e.getFirstChild();
					if (t.getNodeValue().equals(p.getName())) {
						del = (Node) element;
						element.getParentNode().removeChild(del);
					}
				}
			}
			commitTransformer(document);
		} catch (ParserConfigurationException e) {
			System.out.println("ParserConfigurationException");
		} catch (SAXException e) {
			System.out.println("SAXException");
		} catch (IOException e) {
			System.out.println("IOException");
		} catch (TransformerException e) {
			System.out.println("TransformerException");
		} catch (Exception e) {
			System.out.println("Exception");
		}
	}

	/**更新常量**/
	public void updatePerson(Constant p) {
		try {
			Document document = initDoc();
			
			NodeList pList = null;
			
			pList = document.getElementsByTagName("Constant");
			Element e;
			Text t;

			for (int i = 0; i < pList.getLength(); i++) {
				Element element = (Element) pList.item(i);
				NodeList names = element.getElementsByTagName("name");

				if (names.getLength() == 1) {
					e = (Element) names.item(0);
					t = (Text) e.getFirstChild();
					if (t.getNodeValue().equals(p.getName())) {
						NodeList values = element.getElementsByTagName("value");
						if (values.getLength() == 1) {
							e = (Element) values.item(0);
							t = (Text) e.getFirstChild();
							t.setNodeValue(p.getValue());
						}

					}
				}
			}
			commitTransformer(document);
		} catch (ParserConfigurationException e) {
			System.out.println("ParserConfigurationException");
		} catch (SAXException e) {
			System.out.println("SAXException");
		} catch (IOException e) {
			System.out.println("IOException");
		} catch (TransformerException e) {
			System.out.println("TransformerException");
		} catch (Exception e) {
			System.out.println("Exception");
		}
	}

	/**提交操作**/
	private void commitTransformer(Document document) throws Exception {
		TransformerFactory tFactory = TransformerFactory.newInstance();
		Transformer transformer = tFactory.newTransformer();
		DOMSource source = new DOMSource(document);
		StreamResult result = new StreamResult(this._FILEPATH);
		transformer.transform(source, result);
	}

	/**初使化文档**/
	private Document initDoc() throws Exception {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document document = null;
		 if(Common.isLinux()){
			  String path = Thread.currentThread().getContextClassLoader().getResource("constant_server.xml").getFile();
			 _FILEPATH = new File(path);
		 }else{//
			  String path = Thread.currentThread().getContextClassLoader().getResource("constant_local.xml").getFile();
			 _FILEPATH = new File(path);
		 }
		 
		try{
			document = builder.parse(this._FILEPATH);
		}catch(Exception e)
		{
			e.printStackTrace();
		}
		return document;
	}

	/**取单个值**/
	public String getNode(String name) {
		try {
			Document document = initDoc();
			NodeList pList = null;
			
			pList = document.getElementsByTagName("Constant");
			
			for (int i = 0; i < pList.getLength(); i++) {
				Element element = (Element) pList.item(i);
				NodeList ids = element.getElementsByTagName("name");
				if (ids.getLength() == 1) {
					Element e = (Element) ids.item(0);
					Text t = (Text) e.getFirstChild();
					if (t.getNodeValue().trim().equals(name)) {
						NodeList values = element.getElementsByTagName("value");
						if (values.getLength() == 1) {
							e = (Element) values.item(0);
							t = (Text) e.getFirstChild();
							return t.getNodeValue();
						}
					}
				}
			}
			commitTransformer(document);
		} catch (ParserConfigurationException e) {
			System.out.println("ParserConfigurationException");
		} catch (SAXException e) {
			System.out.println("SAXException");
		} catch (IOException e) {
			System.out.println("IOException");
		} catch (TransformerException e) {
			System.out.println("TransformerException");
		} catch (Exception e) {
			System.out.println("Exception");
		}
		return null;
	}
}

 

你可能感兴趣的:(DAO,thread,xml)