897e8601ff8b15c30cbcd8ee9a370b38408863f4.svn-base 5.1 KB
package com.espeed.text;

import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
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;

public class XmlRead {

	/**读xml文件*/
	public List readXml(String file){
		List list = new ArrayList();
		File isf = new File(file);
		if (!isf.exists()) {
			System.out.println("mailService.xml文件不存在,请配置服务器参数");
		}else{
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder;
			Document document;
			
			try {
				builder = factory.newDocumentBuilder();
				document = builder.parse(file);

				Element root = document.getDocumentElement();// 取得根元素
				NodeList serviceList = root.getElementsByTagName("CustomerNO");// 取得子元素
				System.out.println(serviceList.getLength());
				for (int i = 0; i < serviceList.getLength(); i++) {
					Text t1 = (Text) serviceList.item(i).getFirstChild();
					System.out.println(t1.getNodeValue());
					//int i=serviceList.getLength()-1;
					//读最后一个节点信息
					Element service = (Element) serviceList.item(i);// 每一个子元素
					//获取文件夹名字
					NodeList snum = service.getElementsByTagName("CustomerNO");
					if (snum.getLength() == 1) {
						Element e = (Element) snum.item(0);
						Text t = (Text) e.getFirstChild();
						if (t != null) {
							System.out.println(t.getNodeValue());
							list.add(t.getNodeValue().toString());
						}
					}
					//获取文件夹数量
//					NodeList hosts = service.getElementsByTagName("Category");
//					if (hosts.getLength() == 1) {
//						Element e = (Element) hosts.item(0);
//						Text t = (Text) e.getFirstChild();
//
//						if (t != null) {
//							System.out.println(t.getNodeValue());
//							list.add(t.getNodeValue().toString());
//						}
//					}
					
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		return list;
	}

	/**写xml文件*/
	public static void writeXml(String filename,String filenum,String file){
		try {
			Document document = getDocument(file);
			NodeList nodeList = document.getElementsByTagName("MAILSERVICELIST");
			// 创建新的节点
			Node studentNode = document.createElement("MAILSERVICE");
			
			Node numNode=document.createElement("FILENAME");
			numNode.appendChild(document.createTextNode(filename));
			
			Node nameNode = document.createElement("FILENUM");
			nameNode.appendChild(document.createTextNode(filenum));
			
			// 添加节点
			studentNode.appendChild(numNode);
			studentNode.appendChild(nameNode);
			nodeList.item(0).appendChild(studentNode);
			// 此时真正的处理将新数据添加到文件中(磁盘)
			TransformerFactory tf = TransformerFactory.newInstance();
			Transformer transformer = tf.newTransformer();
			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
	        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
	        PrintWriter pw = new PrintWriter(new FileOutputStream(file));
            StreamResult result = new StreamResult(pw);
            
			DOMSource dsource = new DOMSource(document);
			//StreamResult sr = new StreamResult(new File(file));
			transformer.transform(dsource, result);

            
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	/**读xml文件所用的方法*/
	public static Document getDocument(String fileName) {
		Document document = null;
		try {
			DocumentBuilderFactory factory = DocumentBuilderFactory
					.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			document = builder.parse(new File(fileName));

		} catch (Exception e) {
			e.printStackTrace();
		}

		return document;
	}

	/**修改xml文件*/
	public static void updateNode(String filePath,int value) {

		Document document = getDocument(filePath);
		NodeList nodeList = document.getElementsByTagName("FILENUM");
			int i=nodeList.getLength()-1;
			    Node parentNode = nodeList.item(i).getParentNode();
				NodeList nl = parentNode.getChildNodes();
				for (int j = 0; j < nl.getLength(); j++) {
					String modifyNode = nl.item(j).getNodeName();
					if (modifyNode.equalsIgnoreCase("FILENUM")) {
						nl.item(j).getFirstChild().setTextContent(String.valueOf(value));
					}
				}
				modifyFile(document, filePath);
		
	}
	
	/**将改动持久到文件*/
	public static void modifyFile(Document doc, String distFileName) {
		try {
			TransformerFactory tf = TransformerFactory.newInstance();
			Transformer tfer = tf.newTransformer();
			DOMSource dsource = new DOMSource(doc);
			StreamResult sr = new StreamResult(new File(distFileName));
			tfer.transform(dsource, sr);
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
	
	public static void main(String[] args) {
		XmlRead a=new XmlRead();
		a.readXml("F://xml.xml");
	}
}