您的位置:首页 > 编程语言 > ASP

2.JASP_DOM解析xml基本思路总结

2015-08-02 12:59 573 查看
第一步:

 确定需要解析xml文件

第二步:

 创建bean,要和xml里的字段名相同

第三步:

 创建util工具类,所包含的方法基本定了,如下所示:

public static Document getdocument()
throws ParserConfigurationException,

   Exception,
IOException {

  // 1,得到解析工厂

  DocumentBuilderFactory factory
= DocumentBuilderFactory.newInstance();

  // 2,得到解析器

  DocumentBuilder builder =
factory.newDocumentBuilder();

  // 3,解析指定的xml文档

  Document doc =
builder.parse("src/exam.xml");

  return doc;

 }

 // 把内存中的Document
树写回xml

 public static void writexml(Document document)
throws Exception {

  TransformerFactory facotry =
TransformerFactory.newInstance();

  Transformer ts =
facotry.newTransformer();

  ts.transform(new
DOMSource(document), new StreamResult("src/exam.xml"));

 }

第四步:

 创建dao(Data Acess Object)
,实现操作方法(比如增,删,查),基本如下示例:

 public boolean createStudent(Student student)
{

  boolean flag =
false;

  try {

   // 得到document
对象

   Document doc
= Studentutil.getdocument();

   // 1创建name
,location,grade元素并设置主题内容

   Element nameE
= doc.createElement_x_x("name");

   nameE.setTextContent(student.getName());

   Element
locationE = doc.createElement_x_x("location");

   locationE.setTextContent(student.getLocation());

   Element
gradeE = doc.createElement_x_x("grade");

   gradeE.setTextContent(student.getGrad());

   //
2创建student元素,并设置其属性

   Element
studentE = doc.createElement_x_x("student");

   studentE.setAttribute("idcard",
student.getIdcard());

   studentE.setAttribute("examid",
student.getExamid());

   //
给student加孩子节点

   studentE.a(nameE);

   studentE.a(locationE);

   studentE.a(gradeE);

   //
3得到exam 元素 ,将student挂到上面

   Node node =
doc.getElementsByTagName_r("exam").item(0);

   node.a(studentE);

   //
4写入xml

   Studentutil.writexml(doc);

   flag =
true;

  }
catch (Exception e) {

   // TODO
Auto-generated catch block

   // throw new
RuntimeException();// 异常转义

   System.out.println("createStudent-------出错了");

  }

  return flag;

 }

 

 public Student findStudent(String examid) {

  Student s = null;

  try
{

   //
得到document对象

   Document doc
= Studentutil.getdocument();

   //
1得到所有的student元素

   NodeList nl =
doc.getElementsByTagName_r("student");

   //
2遍历所有的student元素,与参数进行比较

   for (int i =
0; i < nl.getLength(); i++) {

    Node
node = nl.item(i);

    if
(node instanceof Element) {

     Element
e = (Element) node;

     if
(e.getAttribute("examid").equals(examid)) {

      //
3如果匹配,找到学生,创建学生对象

      s
= new Student();

      //
4设置学生的各个属性的取值

      s.setExamid(e.getAttribute("examid"));

      s.setIdcard(e.getAttribute("idcard"));

      s.setName(e.getElementsByTagName_r("name").item(0)

        .getTextContent());

      s.setLocation(e.getElementsByTagName_r("location")

        .item(0).getTextContent());

      s.setGrad(e.getElementsByTagName_r("grade").item(0)

        .getTextContent());

     }

    }

   }

  }
catch (Exception e) {

   // TODO
Auto-generated catch block

   System.out.println("findStudent-------出错了");

  }

  return
s;

 }

 

 public boolean deleteStuent(String name) {

  boolean flag =
false;

  try
{

   // 得到document
对象

   Document doc
= Studentutil.getdocument();

   //
1得到所有name元素

   NodeList nl =
doc.getElementsByTagName_r("name");

   //
2遍历name元素是否和参数一致

   for (int i =
0; i < nl.getLength(); i++) {

    //
3如果一直 ,删除父节点

    Node
n = nl.item(i);

    if
(n.getTextContent().equals(name)) {

     //
删除父节点

     n.getParentNode().getParentNode()

       .removeChild(n.getParentNode());

     //
4写入xml

     Studentutil.writexml(doc);

     flag
= true;

     break;

    }

   }

  }
catch (Exception e) {

   // TODO
Auto-generated catch block

   System.out.println("deleteStuent-------出错了");

  }

  return
flag;

 }

第五步:

实现调用即可

 

重在练习!多敲敲!记住!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: