更新时间:2020-11-30 17:44:45 来源:极悦 浏览1663次
XML可用于交换数据。基于XML可以在不兼容的系统之间交换数据,计算机系统和数据库系统所存储的数据有多种形式,对于开发者来说,最耗时间的工作就是在遍布网络的系统之间交换数据。把数据转换为XML格式存储将大大减少交换数据时的复杂性,还可以使这些数据能被不同的程序读取。本文我们就来谈一谈XML数据交互。
为了更好地理解XML数据交互,我们先来了解什么是数据交互。数据交换是指为了满足不同信息系统之间数据资源的共享需要,依据一定的原则,采取相应的技术,实现不同信息系统之间数据资源共享的过程。
1、客户端与服务器常用数据交互格式有xml、json、html。
2、数据交互格式应用场景
移动端(安卓、IOS)通讯方式采用http协议+JSON格式走restful风格。
很多互联网项目都采用Http协议+JSON
因为xml比较重WebService服务采用http+xml格式银行项目使用比较多
我们先以一张图来初步了解XML的数据传输:
如图所示:
3、XML数据传输过程中的组件功能
服务器端:
服务器端组件主要完成以下三个功能:
第一:网络监听功能
当接收到客户端传来的请求时,会触发一个监听事件,在这一事件的处理代码中得到客户端的查询请求,然后执行数据库操作
第二:查询数据库功能
得到客户端的请求内容,在进入所在的数据库里查询到客户端所需要的内容,一般是把查询结果放进一个Map集合当中
第三:将查询结果封装成xml文件格式发送给客户端
为了把map集合转换成xml格式的文件,我们需要用到以下代码实例:
代码如下:
/**
* map转xml
* @param map
* @param body xml元素
* @return
*/
private static Element map2xml(Map<String, Object> map, Element body) {
Iterator<Map.Entry<String, Object>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry<String, Object> entry = entries.next();
String key = entry.getKey();
Object value = entry.getValue();
if(key.startsWith("@")){ //属性
body.addAttribute(key.substring(1, key.length()), value.toString());
} else if(key.equals("#text")){ //有属性时的文本
body.setText(value.toString());
} else {
if(value instanceof java.util.List ){
List list = (List)value;
Object obj;
for(int i=0; i<list.size(); i++){
obj = list.get(i);
//list里是map或String,不会存在list里直接是list的,
if(obj instanceof java.util.Map){
Element subElement = body.addElement(key);
map2xml((Map)list.get(i), subElement);
} else {
body.addElement(key).setText((String)list.get(i));
}
}
} else if(value instanceof java.util.Map ){
Element subElement = body.addElement(key);
map2xml((Map)value, subElement);
} else {
body.addElement(key).setText(value.toString());
}
}
//System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
return body;
}
客户端:
客户端的组件主要完成以下三个方面的工作:
第一:与服务器端建立连接
通过服务器端的监听程序建立连接
第二:发送查询请求
用户在客户端发出查询请求,通过建立的连接把请求发送到服务器端
第三:接收服务器端返回的xml文件,一般都是把它转换为Map集合的形式,并从中提取出所需的各项数据
为了把xml格式的文件转换成map集合,我们需要用到以下代码实例:
代码如下:
将XML文档转换为Map集合,方式也比较多,下面这种方式是DOM4J的方式:
Map<String, String> map=new HashMap<String,String>();
try {
InputStream is = new FileInputStream(new File("config.xml"));
SAXReader sax=new SAXReader(); //创建解析器
Document doc=sax.read(is); //创建对应的Document对象
Element root=doc.getRootElement(); //获取XML文档的根节点对象
List<Element> list = root.elements();
//获取根节点下的所有的子节点
for (Element ele : list) { //遍历根节点下的所有子节点并将其放入MAP对象中
map.put(ele.getName(), ele.getText());
}
is.close();
} catch (Exception e) {
e.printStackTrace();
}
XML除了用于交互数据,还可以从HTML中分离数据,甚至XML可以用于创建新的语言。总之,XML使用一个简单而又灵活的标准格式,为基于Web的应用提供了一个描述数据和交换数据的有效手段。你是否被XML语言的强大所折服呢,还在等什么,快来观看本站的XML教程开始你的XML学习之旅吧!
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习