专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 浅谈XML数据交互

浅谈XML数据交互

更新时间:2020-11-30 17:44:45 来源:动力节点 浏览1550次

XML可用于交换数据。基于XML可以在不兼容的系统之间交换数据,计算机系统和数据库系统所存储的数据有多种形式,对于开发者来说,最耗时间的工作就是在遍布网络的系统之间交换数据。把数据转换为XML格式存储将大大减少交换数据时的复杂性,还可以使这些数据能被不同的程序读取。本文我们就来谈一谈XML数据交互

为了更好地理解XML数据交互,我们先来了解什么是数据交互。数据交换是指为了满足不同信息系统之间数据资源的共享需要,依据一定的原则,采取相应的技术,实现不同信息系统之间数据资源共享的过程。

1、客户端与服务器常用数据交互格式有xml、json、html。

2、数据交互格式应用场景

移动端(安卓、IOS)通讯方式采用http协议+JSON格式走restful风格。

很多互联网项目都采用Http协议+JSON

因为xml比较重WebService服务采用http+xml格式银行项目使用比较多

我们先以一张图来初步了解XML的数据传输:

如图所示:

image.png 

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学习之旅吧!

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>