Spring MVC处理XML数据(2)

Spring MVC处理请求、响应XML数据(2)

上一篇主要简单说了发送XML数据,后台对其处理的过程。本篇主要说明后台解析XML文件内容,将其设置到Java类中后返回给前台的处理方式。其中用到的实体类Student、以及相关的说明与上一篇一样,这里就不列出来了,可以参考文章Spring MVC处理XML数据(1)

返回XML示例:

1.xml文件

测试文件studentInfo.xml在src目录下

<?xml version="1.0" encoding="UTF-8"?>
<student>
	<name>小明</name>
	<age>18</age>
</student>

2.Controller

前台页面ajax请求读取XML文件,文件为src/studentInfo.xml,通过JAXB(Java Architecture for XML Binding)可以比较简单的设置数据到到pojo中。

@RequestMapping("/receiveXml")
@ResponseBody
public Student receiveJson() throws Exception {
	JAXBContext context = JAXBContext.newInstance(Student.class);
		
	//创建Unmarshall对象
	Unmarshaller unmar = context.createUnmarshaller();
	InputStream inputStream = this.getClass().getResourceAsStream("/studentInfo.xml");
	//Unmarshaller对象的unmarshal方法可以进行xml到Java对象的转换
	Student student = (Student) unmar.unmarshal(inputStream);
		
	System.out.println("姓名:" + student.getName() + " 性别:" + student.getAge());
	return student;
}

3.请求的js

3.1方式一:返回xml格式数据

dataType:'xml'指定了返回的数据格式为xml,之后通过jQuery处理,将其转换成xml对象,通过find方法查询对应结点。若是有多条数据,通过$.each(...)方法进行遍历即可。

//接收XML
$("#_btn_receive1").click(function(){
	$.ajax({
		url : "${pageContext.request.contextPath}/xml/receiveXml.do",
		type : "post",
		dataType : "xml",
		success : function(data){
			var $data = $(data);
			var name = $data.find("name").text();
			var age = $data.find("age").text();
			console.log(name + " " + age);
		}
	});
});   

3.2方式二:返回普通xml文档

此时dataType:'text',表示返回类型为普通文本,此时需要先将该字符串转换成xml对象,再进行解析,方法同2.1一样

$("#_btn_receive2").click(function(){
	$.ajax({
		url : "${pageContext.request.contextPath}/xml/receiveXml.do",
		type : "post",
		dataType : "text",
		success : function(data){
			var $data = $($.parseXML(data));
			var name =$data.find("name").text();
			var age = $data.find("age").text();
			console.log(name + " " + age);
		}
	});
});

4.测试

4.1控制台


4.2浏览器控制台


5.注

(1).实体类Student需要通过@XmlRootElement、@XmlElement注解标记根元素以及普通元素;

(2).JAXB解析XML文件,相关方法需要参考资料去学习;

(3).dataTyp:'xml'时,可以发现返回是一个js对象,console.log(data)打印结果如下:

(4).dataType:'text'时,返回字符串,可以通过jQuery的$.parseXML()方法转换,console.log(data)打印结果如下:


(5).一般前后台交互常使用json,xml在某些情况下也会涉及,所以也需要相关了解下,以备不时之需嘛。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值