美文网首页
xml数据转换 Day9 2018-11-27

xml数据转换 Day9 2018-11-27

作者: Ernest_Chou | 来源:发表于2018-11-27 19:38 被阅读0次

    5. xml数据转换

    5.1 传入xml数据

    5.1.1 springmvc-config.xml配置
    <!-- 使用默认配置 自动装配Jaxb2RootElementHttpMessageConverter处理xml数据转换 -->
    <mvc:annotation-driven />
    
     <!-- 主动设置配置方案 -->
        <mvc:annotation-driven>
            <!-- 设置不适用默认的消息转换器 -->
            <mvc:message-converters register-defaults="false">
                <!-- 配置spring的转换器 -->
                <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"/>
     
            </mvc:message-converters>
        </mvc:annotation-driven>
    
    5.1.2 Controller
    @Controller
    @RequestMapping(value="/testXMl")
    public class XmlTestController {
        private static final Log logger = LogFactory.getLog(XmlTestController.class);
        
        @RequestMapping(value="/sendxml",consumes="application/xml")
        @ResponseBody
        public void sendxml(@RequestBody Book book) {
            logger.info(book.toString());
            logger.info("接收xml数据成功");
        }
    }
    
    5.1.3 jsp
    <script type="text/javascript" src="../include/js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript" src="../include/js/json3.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            sendxml();
        });
        function sendxml(){
            var xmlData = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><book><id>1</id><name>我的视觉日记</name><author>王晓慧</author></book>";
            $.ajax("${pageContext.request.contextPath}/testXMl/sendxml",
                {
                    type:"post",
                    contentType:"application/xml",
                    data:xmlData,
                    dataType:"json",
                    async:true,
                    success:function(data){
                        console.log(data)
                    },
                    error:function(){
                        alert("数据发送失败!");
                    }
                    
                
            });
        }
    </script>
    

    5.2 返回xml格式数据

    5.2.1 springmvc-config.xml
    • 同5.1.1
    5.2.2 Controller
    @Controller
    @RequestMapping(value="/testXMl")
    public class XmlTestController {
        private static final Log logger = LogFactory.getLog(XmlTestController.class);
            
        @RequestMapping(value="/readxml")
        public @ResponseBody Book readXml() throws JAXBException {
            JAXBContext context = JAXBContext.newInstance(Book.class);
            //创建一个Unmarshall对象
            Unmarshaller unmar = context.createUnmarshaller();
            InputStream is = this.getClass().getResourceAsStream("/book.xml");
            //Unmarshall 对象的unmarshall方法可以进行xml到java对象的转换
            Book book = (Book) unmar.unmarshal(is);
            logger.info(book);
            return book;
        }
    }
    
    5.2.3 jsp
    <body>
        <table id="booktable" border="1" style="border-collapse: collapse;">
            <tr>
                <th>Id</th>
                <th>书名</th>
                <th>作者</th>
            </tr>
        </table>
    </body>
    <script type="text/javascript" src="../include/js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript" src="../include/js/json3.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            readxml();
        });
        function readxml(){
            
            $.ajax("${pageContext.request.contextPath}/testXMl/readxml",
                {
                    dataType:"text",
                    type:"post",
                    async:true,
                    success:function(xml){
                        var id = $("id",xml).text();
                        var name = $("name",xml).text();
                        var author = $("author",xml).text();
                        var tr = $("<tr align='center'/>");
                        $("<td/>").html(id).appendTo(tr);
                        $("<td/>").html(name).appendTo(tr);
                        $("<td/>").html(author).appendTo(tr);
                        $("#booktable").append(tr);
                        console.log(xml);
                    },
                    error:function(){
                        alert("数据发送失败!");
                    }
                    
                
            });
        }
    </script>
    

    dataType返回数据类型:

    • 预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:

    • "xml": 返回 XML 文档,可用 jQuery 处理。

    • "html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。

    • "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)

    • "json": 返回 JSON 数据 。

    • "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

    • "text": 返回纯文本字符串

    相关文章

      网友评论

          本文标题:xml数据转换 Day9 2018-11-27

          本文链接:https://www.haomeiwen.com/subject/vzynqqtx.html