项目下载地址:http://download.csdn.net/detail/zeq9069/4920226
项目截图:
使用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;
}
}