首页 > hot资讯 > 浅谈XML数据交互

浅谈XML数据交互

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

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


相关文章推荐
HOT资讯 >

热门课程推荐

全部班型支持免费试学

动力节点在线报名表(此信息已加密,请放心填写)

返回顶部