Dom解析XML

来源:互联网 发布:php正则表达式匹配邮箱 编辑:程序博客网 时间:2024/06/07 01:56

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<exam>
<student examid="222" idcard="111">
<name>张三</name>
<location>沈阳</location>
<grade>89</grade>
</student>


<student examid="444" idcard="333">
<name>李四</name>
<location>山西</location>
<grade>99</grade>
</student>


</exam>

public class XmlUtil {



public static String filename="src/exam.xml";

public static Document getDocument() throws Exception{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse(filename);
return document;


public static void writeXml(Document document) throws Exception, Exception{
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer tf=tFactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream(filename)));
}

}


public class StudentDao {
 
public void add(Student s){
try {
Document document = XmlUtil.getDocument();

Element student_tag=document.createElement("student");
student_tag.setAttribute("idcard",s.getIdcard());
student_tag.setAttribute("examid",s.getExamid());

Element name_tag=document.createElement("name");
Element location_tag=document.createElement("location");
Element grade_tag=document.createElement("grade");

name_tag.setTextContent(s.getName());
location_tag.setTextContent(s.getLocation());
grade_tag.setTextContent(s.getGrade()+"");

//建立标签之间的关系
student_tag.appendChild(grade_tag);
student_tag.appendChild(name_tag);
student_tag.appendChild(location_tag);

document.getElementsByTagName("exam").item(0).appendChild(student_tag);

//保存到内存
XmlUtil.writeXml(document);
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}

public Student find(String examid){
try {
Document document = XmlUtil.getDocument();
NodeList list = document.getElementsByTagName("student");

for(int i=0;i<list.getLength();i++){
Element student_tag=(Element) list.item(i);
if(student_tag.getAttribute("examid").equals(examid)){
Student s=new Student();
s.setExamid(examid);
s.setIdcard(student_tag.getAttribute("idcard"));
s.setName(student_tag.getElementsByTagName("name").item(0).getTextContent());
s.setLocation(student_tag.getElementsByTagName("location").item(0).getTextContent());
s.setGrade(Double.parseDouble(student_tag.getElementsByTagName("grade").item(0).getTextContent()));
return s;
}
}
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return null;
}

public void delete(String name){
try {
Document document = XmlUtil.getDocument();
NodeList list = document.getElementsByTagName("name");

for(int i=0;i<list.getLength();i++){
Node node=list.item(i);
if(node.getTextContent().equals(name)){
node.getParentNode().getParentNode().removeChild(node.getParentNode());
XmlUtil.writeXml(document);
}
}
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}

}


0 0