天天看點

jsp使用DOM對xml檔案進行操作的web小項目

項目下載下傳位址:http://download.csdn.net/detail/zeq9069/4920226

項目截圖:

jsp使用DOM對xml檔案進行操作的web小項目
jsp使用DOM對xml檔案進行操作的web小項目

使用DOM對xml檔案進行操作的源代碼:

Xml_all.java

package Xml_1;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.script.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
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.xml.sax.SAXException;

import dao.ContactsDao;
/**
 * 
 * 
 * @author 張二強首次建立   時間:2012年12月15号  下午 14:16
 * 第一次修改   修改人:張二強   時間:2012年12月17号 上午11:32
 *
 *
 */


public class Xml_all {
	
	
	
	/*
	 * 
	 * 構造方法
	 * 
	 * 
	 */
	public Xml_all()
	{
		
		
	}
	
	/*
	 * 建立一個xml檔案
	 * 
	 */
	public Document createOneXml()
	{
		
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
		DocumentBuilder db = null;
		try {
			 db=dbf.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		Document d=db.newDocument();
		
		
		Element userinfo =d.createElement("UserInfo");
		Element group=d.createElement("Group");
		Element groupname=d.createElement("GroupName");
		Element userlist=d.createElement("UserList");
		
		groupname.setTextContent("未分組");
		
		
		group.appendChild(groupname);
		group.appendChild(userlist);
		userinfo.appendChild(group);
		d.appendChild(userinfo);
		
		
		
		
		
		return d;
		
	}
	
	
	/*
	 * 
	 * 打開一個xml檔案
	 * 
	 */
	
	public Document openOneXml(String url)
	{
		
		
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
		DocumentBuilder db=null;
		Document d=null;
		try {
			 db=dbf.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		File f=new File(url);
		if(!f.exists()){
			
			d=createOneXml();
			
			
		}else{
			
			try {
				 d=db.parse(f);
			} catch (SAXException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
		
		
		
		
		
		return d;
		
		
		
	}
	
	
	/*
	 * 
	 * 儲存一個建立好的xml檔案
	 * 
	 */
	
	public void saveOneXml(Node node,String url)
	{
		
		TransformerFactory tff=TransformerFactory.newInstance();
		Transformer tf=null;
		try {
			 tf=tff.newTransformer();
		} catch (TransformerConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		DOMSource ds=new DOMSource(node);
		StreamResult rs=new StreamResult(new File(url));
		
		try {
			tf.transform(ds, rs);
		} catch (TransformerException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	
	/*
	 * 
	 * 添加一個聯系人分組
	 */
	
	public boolean addOneContactGroup(Document document,String name)//node為xml檔案的DOM的根節點Docment
	{
		
		
		Element userinfo=document.getDocumentElement();
		NodeList groupnl=userinfo.getElementsByTagName("Group");
		
		for(int i=0;i<groupnl.getLength();i++){
			if(groupnl.item(i).getFirstChild().getTextContent().equals(name)){
				
				return false;
			}
			
			
		}
		
		
		
		
		Element group=document.createElement("Group");
		Element groupname=document.createElement("GroupName");
		Element userlist=document.createElement("UserList");
		
		groupname.setTextContent(name);
		
		userinfo.appendChild(group);
		group.appendChild(groupname);
		group.appendChild(userlist);
		
		
		
		return true;
		
		
	}

	
	/*
	 * 添加一個聯系人
	 * 
	 */
	
	public Document addOneContact(Document document,String groupname1,ContactsDao contact)
	{
		
		Element userinfo=document.getDocumentElement();
		
		NodeList nodelist=userinfo.getElementsByTagName("Group");
		
		for(int i=0;i<nodelist.getLength();i++){
			Node g=nodelist.item(i);
			Node gname=g.getFirstChild();
			
				if(gname.getTextContent().equals(groupname1)){
					
					Node ulist=g.getLastChild();
					Element user=document.createElement("User");
					Element name=document.createElement("name");
					Element homePhone=document.createElement("homePhone");
					Element phone=document.createElement("phone");
					Element qq=document.createElement("qq");
					Element msn=document.createElement("msn");	
					Element email=document.createElement("email");
			        Element work=document.createElement("work");
			        Element address=document.createElement("address");
			        Element sex=document.createElement("sex");
			        Element hobby=document.createElement("hobby");
					
			        name.setTextContent(contact.getName());
			        homePhone.setTextContent(contact.getHomePhone());
			        phone.setTextContent(contact.getPhone());
			        qq.setTextContent(contact.getQq());
			        msn.setTextContent(contact.getMsn());
			        email.setTextContent(contact.getEmail());
			        work.setTextContent(contact.getWork());
			        address.setTextContent(contact.getAddress());
			        sex.setTextContent(contact.getSex());
			        hobby.setTextContent(contact.getHobby());
			        
			       
					user.appendChild(name);
					user.appendChild(homePhone);
			        user.appendChild(phone);
			        user.appendChild(qq);
			        user.appendChild(msn);
			        user.appendChild(email);
			        user.appendChild(work);
			        user.appendChild(address);
			        user.appendChild(sex);
			        user.appendChild(hobby);
			        ulist.appendChild(user);
			      return document;
				}
		}
		
		
		
		  return document;
		
	}
	
	
	/*
	 * 删除一個聯系人分組
	 * 
	 */
	
	public Document deleteOneContactGroup(Document document,String groupname1)
	{
		
		Element userinfo=document.getDocumentElement();
		
		NodeList nodelist=userinfo.getElementsByTagName("Group");
		
		for(int i=0;i<nodelist.getLength();i++){
			Node group=nodelist.item(i);
			Node gname=group.getFirstChild();
			Node ulist=group.getLastChild();
			NodeList user=ulist.getChildNodes();
			if(gname.getTextContent().equals(groupname1)){
				
				for(int j=0;j<user.getLength();j++){
					Node f=user.item(j);
					ulist.removeChild(f);
					
				}
				
				group.removeChild(ulist);
				userinfo.removeChild(group);
				
				
				return document;
			}
			
			
			
		}
		
		return document;
	}
	
	/*
	 * 删除一個聯系人
	 * 
	 */
	public Document deleteOneContact(Document document ,String groupname1,String uname ){
		
		Element userinfo=document.getDocumentElement();
		
		NodeList nodelist=userinfo.getElementsByTagName("Group");
		
		for(int i=0;i<nodelist.getLength();i++){
			
			Node group=nodelist.item(i);
			Node gname=group.getFirstChild();
			Node ulist=group.getLastChild();
			NodeList user=ulist.getChildNodes();
			Node u=null;
			if(gname.getTextContent().equals(groupname1)){
				
			for(int j=0;j<user.getLength();j++){
				u=user.item(j);
			Node username1=u.getFirstChild();
			 
			if( username1.getTextContent().equals(uname)){
				 
				ulist.removeChild(u);
			
				return document;
			}
			}
			}
			
		}
		
		return document;
		
	}
	
	/*
	 * 
	 * 修改一個聯系人分組
	 * 
	 */
	
	public Document updateOneContactGroup(Document document ,String groupname1,String oldgroupname)
	{
		
		Element userinfo=document.getDocumentElement();
		
		NodeList group=userinfo.getChildNodes();
		
		for(int i=0;i<group.getLength();i++){
			
			Node gname=group.item(i).getFirstChild();
			
			if(gname.getTextContent().equals(oldgroupname)){
				
				gname.setTextContent(groupname1);
				return document;
				
			}
			
			
			
		}
		
		
		
		
		return document;
		
		
		
	}
	
	
	/*
	 *修改一個聯系人
	 * 
	 * 
	 */
	
	
	public Document  updateOneContact(Document document ,String uname,String groupname1,ContactsDao contact)
	{
		
		boolean flag=false;
		Element userinfo=document.getDocumentElement();
		NodeList group=userinfo.getChildNodes();
		
		for(int i=0;i<group.getLength();i++){
			
			Node g=group.item(i);
			Node gname=g.getFirstChild();
			Node ulist=g.getLastChild();
			NodeList user=ulist.getChildNodes();
			
			if(gname.getTextContent().equals(groupname1)){
				
				
				
				for(int j=0;j<user.getLength();j++){
					Node user1=user.item(j);
					NodeList user2=user1.getChildNodes();
					flag=false;
					for(int m=0;m<user2.getLength();m++){
						
						Node username=user2.item(m);
						
						
						if(username.getTextContent().equals(uname)){
							
							
							
							flag=true;
							break;
						}
						
						
					}
					
				if(flag==true){
					
                    for(int n=0;n<user2.getLength();n++){
						
						Node user11=user2.item(n);
						String user11Name=user11.getNodeName();
						
						if(user11Name.equals("name")){
							
							user11.setTextContent(contact.getName());
							
							
						}else if(user11Name.equals("homePhone")){
							
							user11.setTextContent(contact.getHomePhone());
						
						}else if(user11Name.equals("phone")){
							
							user11.setTextContent(contact.getPhone());
						
						}else if(user11Name.equals("qq")){
							
							user11.setTextContent(contact.getQq());
						
						}else if(user11Name.equals("email")){
							
							user11.setTextContent(contact.getEmail());
						
						}else if(user11Name.equals("msn")){
							
							user11.setTextContent(contact.getMsn());
						
						}else if(user11Name.equals("work")){
							
							user11.setTextContent(contact.getWork());
						
						}else if(user11Name.equals("address")){
							
							user11.setTextContent(contact.getAddress());
						
						}else if(user11Name.equals("sex")){
							
							user11.setTextContent(contact.getSex());
						
						}else if(user11Name.equals("hobby")){
							
							user11.setTextContent(contact.getHobby());
						
						}
						
						
						
						}
						
					
                    
                    
                    
                    }
					
					
					
					
					
				}
				
				
				
			}
			
			
			
			
			
		}
		
		return document;
		
	}
	
	
	/*
	 * 
	 * 根據聯系人組名和聯系人的名字得到聯系人的所有資訊
	 */
	public HashMap showOneContact(Document document ,String groupname ,String username ){
		HashMap map=null;
		
       Element userinfo=document.getDocumentElement();
		
		NodeList nodelist=userinfo.getElementsByTagName("Group");
		
		for(int i=0;i<nodelist.getLength();i++){
			
			Node group=nodelist.item(i);
			Node gname=group.getFirstChild();
			
			if(gname.getTextContent().equals(groupname)){
			
			Node ulist=group.getLastChild();
			NodeList user=ulist.getChildNodes();
			Node u=null;
			 
				
			for(int j=0;j<user.getLength();j++){
				u=user.item(j);
			Node username1=u.getFirstChild();
			
			if(username1.getTextContent().equals(username)){找到對應的user
				
				map=new HashMap();
				NodeList usertrue=u.getChildNodes();
				
				for(int ji=0;ji<usertrue.getLength();ji++){
					
					map.put(usertrue.item(ji).getNodeName(), usertrue.item(ji).getTextContent()+"");
					
					
					
				}
				
				return map;
				
				
			}
			
			}
			
		}
		
		}
		
		
		
		
		
		return map;
	} 
	
	/*
	 * 
	 * 取出所有聯系人祖的名字
	 * 
	 */

	public List<String> getAllGroup(Document document){
		
		List<String> grouplist=null;
		
		Element userinfo=document.getDocumentElement();
		NodeList group=userinfo.getElementsByTagName("Group");
		if(group.getLength()>0){
			grouplist=new ArrayList<String>();
		for(int i=0;i<group.getLength();i++){
			
			grouplist.add(group.item(i).getFirstChild().getTextContent());
			
		}
		
		}
		
		return grouplist;
	}
	
}
           

繼續閱讀