Dom4J的应用
2012-04-12 23:12 党飞 阅读(184) 评论(0) 收藏 举报Dom4J是目前读取xml文件最常用的方式。
下面介绍一个Dom4J的应用例子:
建一个工具里
实现Xml文件的加载和保存
public class Dom4JDomUtil {
public static Document getDocument() throws Exception{
SAXReader reader = new SAXReader();
return reader.read(new File("src/exam.xml"));
}
public static void write2xml(Document document) throws Exception{
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/exam.xml"), format);
writer.write(document);
writer.close();
}
}
dom4j具体实现:
public class StudentDao1 {
/**
* 保存学生信息
*
* @param student数据
* @return 成功返回true
* <student idcard="111" examid="222">
<name>张三</name>
<location>沈阳</location>
<grade>89</grade>
</student>
*/
public boolean saveStudent(Student student) {
boolean result = false;
try{
Document document = Dom4JDomUtil.getDocument();
Element root = document.getRootElement();
Element element = root.addElement("student");
element.addAttribute("examid", student.getExamid());
element.addAttribute("idcard", student.getIdcard());
element.addElement("name").setText(student.getName());
element.addElement("location").setText(student.getLocation());
element.addElement("grade").setText(student.getGrade()+"");
Dom4JDomUtil.write2xml(document);
result = true;
}catch(Exception e){
//异常转义,不能掉链子
throw new RuntimeException(e);
}
return result;
}
public boolean deleteStudent(String name) {
boolean result = false;
try{
Document document = Dom4JDomUtil.getDocument();
String xpath = "//name";
List<Node> list = document.selectNodes(xpath);
for(int i = 0 ;i < list.size();i++)
{
Node node = list.get(i);
if(node.getText().equals(name.trim()))
{
node.getParent().getParent().remove(node.getParent());
Dom4JDomUtil.write2xml(document);
result=true;
}
}
}catch(Exception e)
{
System.out.println("服务器忙");
}
return result;
}
/**
* 根据准考证号查询学生信息
* @param examid
* @return 如果没有对应学生信息,返回null
*/
public Student queryStudent(String examid){
Student student = null;
try{
Document document = Dom4JDomUtil.getDocument();
String xpath = "//student[@idcard='"+examid+"']";
Node node = document.selectSingleNode(xpath);
if(node!=null)
{
Element element = (Element)node;
student = new Student();
student.setExamid(element.attributeValue("examid"));
student.setIdcard(element.attributeValue("idcard"));
student.setName(element.elementText("name"));
student.setLocation(element.elementText("location"));
student.setGrade(Float.parseFloat(element.elementText("grade")));
}
else{
System.out.println("node is null.");
}
}catch(Exception e)
{
System.out.println("服务器很忙");
}
return student;
}
}
浙公网安备 33010602011771号