【问题标题】:How to consume XML data using Java and Spring Boot如何使用 Java 和 Spring Boot 使用 XML 数据
【发布时间】:2021-01-04 02:00:35
【问题描述】:

我需要使用 XML 数据。 我的 XML 片段:

<TallyTransferResponse>
    <Response>
        <TransactionDocumentNo>iut-1</TransactionDocumentNo>
        <FromLocation>Bangalore</FromLocation>
        <ToLocation>Noida</ToLocation>
    </Response>
    <Response>
        <TransactionDocumentNo>iut-2</TransactionDocumentNo>
        <FromLocation>Bangalore</FromLocation>
        <ToLocation>Mumbai</ToLocation>
    </Response>
</TallyTransferResponse>

这是实体类的代码:

@Entity
public class TallyTransferResponse{
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;
    private String transaction_document_no;
    private String from_location;
    private String to_location;
public TallyTransferResponse() {}
    /**
     * @param transaction_document_no
     * @param from_location
     * @param to_location
     */
    public TallyTransferResponse(String transaction_document_no, String from_location, String to_location) {
        this.transaction_document_no = transaction_document_no;
        this.from_location = from_location;
        this.to_location = to_location;
    }
//Getters and Setters
}

我不知道如何编写服务和控制器来使用这个 XML。

【问题讨论】:

  • 您好,您能否详细说明一下您希望如何使用它,我的意思是是否有一个 REST 服务产生这个 XML 作为响应,或者文件系统中有一些文件,或者这个XML 数据来自其他来源,例如队列?
  • 嗨,我正在尝试使用 XML 作为来自 Tally 的响应。

标签: java xml spring-boot jackson


【解决方案1】:

您可以使用 spring 的 restTemplate 向端点发出 (get/post) 请求,并将响应作为字符串获取,例如:

final ResponseEntity<String> response = restTemplate.getForEntity(endpointUrl, String.class);

并将其映射到 XML 或 JOSN。 更直接的版本可能是在响应中请求并期望数据模型,例如:

final ResponseEntity<Company> response = restTemplate.getForEntity(endpointUrl, Company.class);

在这种情况下,您必须在模型类中添加一些 XML 绑定注解,例如:

@XmlRootElement(name="company", namespace="some.namespace" )
@XmlAccessorType(XmlAccessType.NONE)
public class Company {
@XmlAttribute(name="id")
private Integer id;
@XmlElement(name="company_name")
private String companyName;
.....
//the rest of the class is omitted

您可以通过在请求中添加一个额外的标头来从服务端点请求 JSON 响应,例如:

Accept: application/json

那么数据模型类就不能省略所有的 XML 绑定注解。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2017-12-29
    • 2018-10-07
    • 2014-09-07
    • 2018-03-13
    • 2017-10-30
    • 1970-01-01
    • 2015-11-16
    • 2019-12-30
    相关资源
    最近更新 更多