关于java后台如何接收xml格式的数据

业务场景:用户发送下单请求,格式为xml格式,服务器接收数据完成下单,并返回结果给客户。

请求格式:

<request>
   <head>
     <sign></sign>
     <time></time>
     <msg></msg>
  </head>
  <body>
    <productId></productId>
    <count></count>
    <price></price>
    <user>
       <userId></userId>
       <name></name>
       <mobil></mobil>
       <email></email>
    </user>
    <extendInfos>
       <extendInfo>
          <city></city>
          <province></province>
          <district></district>
          <address></address>
       </extendInfo>
    </extendInfos>
  </body>
</request>

这段请求报文是xml格式的,在后台我们可以使用 javax.xml.bind.annotation 这个包格式化数据。

我们可以在做数据对应的dto是用@XmlElement注释标注对应节点

比如:

import java.io.Serializable;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import com.juqitech.adapter.dto.ChannelDTO;

@XmlRootElement(name = "request")
@XmlAccessorType(XmlAccessType.NONE)
public class RequestDTO implements Serializable {

    private static final long serialVersionUID = -1;

    @XmlElement
    private RequestHeaderDTO head;

    @XmlElement
    private RequestBodyDTO body;

    public RequestHeaderDTO getHead() {
        return head;
    }

    public void setHead(RequestHeaderDTO head) {
        this.head = head;
    }

    public RequestBodyDTO getBody() {
        return body;
    }

    public void setBody(RequestBodyDTO body) {
        this.body = body;
    }

}
@XmlRootElement(name = "request")可以定义在类上,代表根节点@XmlAccessorType(XmlAccessType.FIELD)表示使用这个类中的 private 非静态字段作为 XML 的序列化的属性或者元素。这里还可以选择属性,也就是使用 set/get 方法来序列化属性或者元素。

关键在于在请求中有个extendInfos的array数组,一般我们都会用list来表示,所以在RequestBodyDTO中可以这么写:

import java.io.Serializable;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import com.juqitech.adapter.dto.ChannelDTO;

@XmlRootElement(name = "body")
@XmlAccessorType(XmlAccessType.NONE)
public class RequestBodyDTO implements Serializable {

    private static final long serialVersionUID = -1;

    //....前面的属性省略

    @XmlElementWrapper(name="extendInfos")
    @XmlElement(name="extendInfo")
    private List<extendInfo> extendInfos;

     //。。其他的省略

}
@XmlRootElement(name = "extendInfo")
@XmlAccessorType(XmlAccessType.NONE)
public class extendInfo{
   @XmlElement
   private String city;
   @XmlElement
   private String province;
   @XmlElement
   private String district;

   //省略
}
@XmlElementWrapper 这个注释用来在外面在包一层,用于处理list集合  
				
时间: 2024-10-14 06:42:54

关于java后台如何接收xml格式的数据的相关文章

SpringMVC接收XML格式的数据

1.搭建SpringMVC+spring环境 2.web.xml,Springmvc-config.xml.springMVC提供了处理xml格式请求响应的HttpMessageConverter,springMVC默认使用Jaxb2RootElementHttpMessageConverter,通过 JAXB2读写XML消息,并将请求信息转换到注解XMLRootElement和XmlType作用的类中. <?xml version="1.0" encoding="UT

使用原生AJAX和PHP 构建和解析XML格式的数据

XML:eXtensible Markup Language,可扩展的标签语言,本身是一种字符串格式,用于描述批量复合数据, 语法特点:  (1)所有的数据放在标签中 (2)整个XML字符串有且只能有一个根标签 (3)所有的标签名都可以自定义,但严格区分大小写,且开始和结束标记必须完全一样 (4)每个标签都可以自定义属性,属性必须有值,值必须用单引号/双引号括起来 (5)每个标签都可以定义任意的子标签,标签可以嵌套,但不能交叉 注意:HTML和XML的区别 HTML语法随意:XML语法严格: H

WebService 返回json格式和返回xml格式的数据

返回json格式 //using System.Web.Script.Services; [WebMethod] [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] public void HelloWorld() { Context.Response.Clear(); Context.Response.ContentType = "application/json"; Model.User.U

PHP接收JSON格式的数据

在API服务中,目前流行采用json形式来交互. 给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据. 接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型.因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类

数据存储-自定义Json串写入文件与XML格式读取数据

数据存储总的来说有三种方式 1>,数据库 2>,文件 3>,网络 在这里我介绍的是Json格式与XML格式的文件存储 先说说常用的文件存储数据的格式 1>,Json格式 2>,XML格式 这俩种格式我觉得区别的话应该是Json适合存储小数据,XML适合存储大数据 在cocos2d-x中,如果我们要用Json首先我们要先导入一个Json库:libjson demo如下: 要添加libjson头文件 创建Json格式的数据: 这里用JSONNode,定义一个父节点n,再定义一个节

C#中使用XmlDocument类来创建和修改XML格式的数据文件

通过XmlDocument类修改XML文档数据,通常需要以下几个主要步骤或其中几个步骤. (1)获取一个包含XML文档数据的XmlDocument类对象,通常有两种方法来实现这个功能: 通过XmlDocument类的构造函数创建不包含任何结点的空对象,常用默认构造函数. (2)通过XmlDocument类的ChildNodes和Item属性获取某个结点(XmlNode类型),通过XmlNode的Name.Value.InnerText等属性修改选中结点的数据. (3)通过XmlDocument类

Java生成和解析XML格式文件和字符串的实例代码

1.基础知识:Java解析XML一般有四种方法:DOM.SAX.JDOM.DOM4J. 2.使用介绍1).DOM(1)简介 由W3C(org.w3c.dom)提供的接口,它将整个XML文档读入内存,构建一个DOM树来对各个节点(Node)进行操作.优点就是整个文档都一直在内存中,我们可以随时访问任何节点,并且对树的遍历也是比较熟悉的操作:缺点则是耗内存,并且必须等到所有的文档都读入内存才能进行处理. (2)示例代码: 1.基础知识:Java解析XML一般有四种方法:DOM.SAX.JDOM.DO

java word另存为word xml格式

1.jacob-1.15-M3-x86.dll copy到c:\\windows\system32 2.引入jacob.jar 把jacob.dll(不同版本的jacob的dll文件名有所不同)复制到C:\Program Files\Java\jdk1.6.0_17\jre\bin目录下即可. 在tomcat上使用时要在tomcat使用的jdk的jdk/jre/bin目录下放置配套的jacob.dll文件. jdk安装目录的jdk/jre/bin目录下放置jacob.dll文件 jacob.ja

java注解方式解析xml格式

注解类和字段方式: @XStreamAlias("message") 别名注解 注解集合: @XStreamImplicit(itemFieldName="part") 比如说要注解下面这个xml: <conditions> <condition queryType="33106"> <item> <name>corpName</name> <value></value