XML解析技术之案例分析

   日期:2020-05-30     浏览:86    评论:0    
核心提示:一、概念XML文件多用于信息的描述,所以在得到一个xml文档之后按照xml中的元素取出对应的信息就是xml的解析。其中一个xml文件 只能有一个根元素。XML文件格式是一个树形结构。Xml解析有两种方式:DOM解析、SAX解析。二、DOM解析和SAX解析的区别DOM解析:适用于服务器端解析一次性把 xml 的文件中 全部数据(1棵大树)读入到内存当中1>非常浪费内存2>性能高 支持数据的上下导航 可以定位任意的一次节点SAX解析:适用于移动端解析1>帮java

一、概念

XML文件多用于信息的描述,所以在得到一个xml文档之后按照xml中的元素取出对应的信息就是xml的解析。其中一个xml文件 只能有一个根元素。
XML文件格式是一个树形结构。
Xml解析有两种方式:DOM解析、SAX解析。

二、DOM解析和SAX解析的区别

  • DOM解析:适用于服务器端解析
    一次性把 xml 的文件中 全部数据(1棵大树)读入到内存当中
    1>非常浪费内存
    2>性能高 支持数据的上下导航 可以定位任意的一次节点
  • SAX解析:适用于移动端解析
    1>帮你节省内存:一次只往内存中读入一个元素(标签)
    -------问你 要不要处理 ?处理操作
    ------ 不处理 就把这个元素从内存中删除掉
    2>性能效率低下

三、案例

结构如下图所示:

  • Student.java
    (需要添加set和get方法)
    private String id;
	private String name;
	private String age;
  • students.xml
<?xml version="1.0" encoding="UTF-8"?>
<students>
      <student id="1001">
         <name>zhangsan</name>
         <age>8</age>
      </student>
      <student id="1002">
         <name>lisi</name>
         <age>8</age>
      </student>
      <student id="1003">
         <name>wangwu</name>
         <age>8</age>
      </student>
</students>
  • Demo1.java
package com.gg.demo;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import com.gg.entity.Student;
public class Demo1 {
	public static void main(String[] args) throws Exception {
		//1.创建一个解析器工厂对象 
		DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();		
		//2.由这个工厂对象   创建一个解析器对象
		DocumentBuilder builder=factory.newDocumentBuilder();
		//3.解析器 去解析相应的XML文件
		//所有的数据就是document
		Document document=builder.parse("students.xml");
		List<Student>  students_list =new ArrayList<Student>();
		NodeList students=document.getElementsByTagName("student");
		for (int i = 0; i < students.getLength(); i++) {
			Student student=new Student();
			//id属性获取方法
			//名字
			//students.item(i).getAttributes().item(0).getNodeName();
			//值
			String id=students.item(i).getAttributes().item(0).getNodeValue();
			student.setId(id);
			//获取  student元素的子元素们
			NodeList child_list=students.item(i).getChildNodes();		
			for (int j = 0; j < child_list.getLength(); j++) {
				//获取student子元素的名称  只保留name  age
				String node_name=child_list.item(j).getNodeName();	
				if(node_name.equals("name")) {
                   String name=child_list.item(j).getTextContent();
                   student.setName(name);
				}
				if(node_name.equals("age")) {
					String age=child_list.item(j).getTextContent();
	                student.setAge(age);	
				}
			}
			   students_list.add(student);
		}
		//解析完成
		for (Student student : students_list) {
			System.out.println(student);
		}
	}
}
  • 测试结果
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服