dom4j 操作 XML

1.导入dom4j-1.6.1.jar
2.导入jaxen-1.1.1.jar
package  com.hwp.test;

import  java.io. * ;
import  java.util. * ;

import  org.dom4j. * ;
import  org.dom4j.io. * ;

/** */ /**
 * 
@author 惠万鹏
 * 
 
*/

public   class  XmlTest
{
    
/** *//**
     * <p>
     * 写XML文件
     * </p>
     * 
     * 
@param fileName
     *            文件名
     * 
@param document
     *            文档
     * 
@return isWritedSuccessful 写XML是否成功
     
*/

    
public static boolean writeXML(String fileName, Document document)
    
{
        
boolean isWritedSuccessful = false;
        XMLWriter writer 
= null;
        
try
        
{
            OutputFormat format 
= OutputFormat.createPrettyPrint();
            format.setEncoding(
"UTF-8");
            writer 
= new XMLWriter(new FileOutputStream(fileName), format);
            writer.write(document);
            isWritedSuccessful 
= true;
        }

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

        
finally
        
{
            
if (writer != null)
            
{
                
try
                
{
                    writer.close();
                }

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

            }

        }

        
return isWritedSuccessful;
    }

    
    
/** *//**
     * <p>
     * 根据文件名创建XML
     * </p>
     * 
     * 
@param fileName
     *            文件名
     * 
@return 是否创建成功
     
*/

    
public static boolean createStudentXML(String fileName)
    
{
        Document document 
= DocumentHelper.createDocument();
        document.addComment(
"99级1班学生信息");
        document.addElement(
"students");
        
return XmlTest.writeXML(fileName, document);
    }

    
    
/** *//**
     * <p>
     * 根据文件名得到Document
     * </p>
     * 
     * 
@param fileName
     *            文件名
     * 
@return document
     
*/

    
public static Document getStudentXMLDocument(String fileName)
    
{
        SAXReader saxReader 
= new SAXReader();
        
try
        
{
            
return saxReader.read(new File(fileName));
        }

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

        
return null;
    }

    
    
/** *//**
     * <p>
     * 向XML里插入一条信息
     * </p>
     * 
     * 
@param fileName
     * 
@param id
     * 
@param name
     * 
@return
     
*/

    
public static boolean addStudentInfo(String fileName, String id, String name)
    
{
        Document document 
= XmlTest.getStudentXMLDocument(fileName);
        
if (document == null)
        
{
            
return false;
        }

        
        Element eStudents 
= document.getRootElement();
        Element eStudent 
= eStudents.addElement("student");
        eStudent.addAttribute(
"id", id);
        Element eName 
= eStudent.addElement("name");
        eName.setText(name);
        
return XmlTest.writeXML(fileName, document);
    }

    
    
/** *//**
     * <p>
     * 根据id删除相应的student信息
     * </p>
     * 
     * 
@param fileName
     *            文件名
     * 
@param id
     *            studentId
     * 
@return
     
*/

    
public static boolean deleteStudentInfo(String fileName, String id)
    
{
        
boolean isDeleteSuccessful = false;
        Document document 
= XmlTest.getStudentXMLDocument(fileName);
        
if (document == null)
        
{
            
return false;
        }

        List list 
= document.selectNodes("/students/student[@id='" + id + "']");
        System.out.println(list);
        
if (list != null)
        
{
            Iterator it 
= list.iterator();
            
while (it.hasNext())
            
{
                Element eStudent 
= (Element) it.next();
                
if (eStudent != null)
                
{
                    eStudent.getParent().remove(eStudent);
                }

                isDeleteSuccessful 
= document.remove(eStudent);
            }

        }

        
if (isDeleteSuccessful)
        
{
            
return XmlTest.writeXML(fileName, document);
        }

        
return isDeleteSuccessful;
    }

    
    
/** *//**
     * <p>
     * 解析xml
     * </p>
     * 
     * 
@param fileName
     *            文件名
     * 
@return
     
*/

    
public static List<ArrayList<String>> getStudentInfo(String fileName)
    
{
        List
<ArrayList<String>> students = null;
        students 
= new ArrayList<ArrayList<String>>();
        
        Document document 
= XmlTest.getStudentXMLDocument(fileName);
        List eStudentList 
= document.selectNodes("/students/*");
        
if (eStudentList != null)
        
{
            Iterator itEStudentList 
= eStudentList.iterator();
            ArrayList
<String> student = null;
            
while (itEStudentList.hasNext())
            
{
                student 
= new ArrayList<String>();
                Element eStudent 
= (Element) itEStudentList.next();
                student.add(eStudent.attributeValue(
"id"));
                student.add(eStudent.element(
"name").getTextTrim());
                students.add(student);
            }

        }

        System.out.println(students);
        
return students;
    }

    
    
public static void main(String args[])
    
{
        String fileName 
= "c:/stu.xml";
        XmlTest.createStudentXML(fileName);
         
for(int i=0;i<10;i++)
             XmlTest.addStudentInfo(fileName,String.valueOf(i),
"惠万鹏" + i);
         
//XmlTest.deleteStudentInfo(fileName,"4");
        XmlTest.getStudentInfo(fileName);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值