解析xml--org.w3c.dom

来源:互联网 发布:c语言下标运算符 编辑:程序博客网 时间:2024/05/17 02:26

1.要解析的XML文件如下:

<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet href="student.xsl" type="text/xsl"?>
<StudentInfo>

 <student>
  <name>达内</name>
  <sex>男</sex>
  <lesson>
   <lessonName>Java初级</lessonName>
   <lessonScore>85</lessonScore>
  </lesson>
  <lesson>
   <lessonName>Oracle数据库</lessonName>
   <lessonScore>95</lessonScore>
  </lesson>
  <lesson>
   <lessonName>Java中级</lessonName>
   <lessonScore>80</lessonScore>
  </lesson>
  <lesson>
   <lessonName>Java高级</lessonName>
   <lessonScore>100</lessonScore>
  </lesson>
 </student>

 <breakLine />

 <student>
  <name>花木兰</name>
  <sex>女</sex>
  <lesson>
   <lessonName>射箭</lessonName>
   <lessonScore>100</lessonScore>
  </lesson>
  <lesson>
   <lessonName>柔道</lessonName>
   <lessonScore>95</lessonScore>
  </lesson>
  <lesson>
   <lessonName>国学</lessonName>
   <lessonScore>80</lessonScore>
  </lesson>
  <lesson>
   <lessonName>烹饪</lessonName>
   <lessonScore>60</lessonScore>
  </lesson>
  <lesson>
   <lessonName>游泳</lessonName>
   <lessonScore>70</lessonScore>
  </lesson>
 </student>

 <breakLine />

</StudentInfo>

2.对应的java类

package com.yeg.xml;

import java.io.IOException;

import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class TestDOMParser {
    public static void main(String[] args) {     
        TestDOMParser tp = new TestDOMParser();       
        tp.parseXMLFile("com//yeg//xml//student.xml");
    }
/********
 *
 *利用W3C提供的方法进行解析XML,读XML内容
 *
 *************/
    public void parseXMLFile(String fileName) {
        try {
      DOMParser parser = new DOMParser();//解析器类
   //解析文件名传入
      parser.parse(fileName);
       //获得Documet,与xml建立对象匹配
         Document  doc = parser.getDocument();
        
   //获得根节点StudentInfo
            Element elmtInfo = doc.getDocumentElement();
  //得到所有student节点,节点集合
            NodeList nlStudent = elmtInfo.getElementsByTagName("student");
           
            System.out.println("XML文件开始解析");

   //循环输出每一个学生成绩
   
            for (int i = 0; i < nlStudent.getLength(); i++) {
    
    //当前student元素
                Element elmtStudent = (Element) nlStudent.item(i);
    //Name/sex/lesson节点清单
                NodeList nlCurrent = elmtStudent.getElementsByTagName("name");
               
                System.out.println("姓名:" +nlCurrent.item(0).getFirstChild().getNodeValue());

                nlCurrent = elmtStudent.getElementsByTagName("sex");
                System.out.println("性别:" + nlCurrent.item(0).getFirstChild().getNodeValue());
//取得Lesson节点,不是一个,需要循环
                nlCurrent = elmtStudent.getElementsByTagName("lesson");

                for (int j = 0; j < nlCurrent.getLength(); j++) {
       //Lesson这个元素的对应          
                    Element elmtLesson = (Element) nlCurrent.item(j);
                    NodeList nlLesson = elmtLesson.getElementsByTagName("lessonName");
                    System.out.print(nlLesson.item(0).getFirstChild().
                                     getNodeValue());
                    System.out.print(":");
                    nlLesson = elmtLesson.getElementsByTagName("lessonScore");
                    System.out.print(nlLesson.item(0).getFirstChild().
                                     getNodeValue());
                    System.out.println();
                }

                System.out.println("------------------------------------");
            }

            System.out.println("XML文件解析结束");
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}


 

原创粉丝点击