#java #xml #spring-boot #jackson
#java #xml #spring-boot #джексон
Вопрос:
Мне нужно использовать 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.
Комментарии:
1. Привет, не могли бы вы указать более подробно, как вы хотите их использовать, я имею в виду, есть ли служба REST, которая выдает этот XML в качестве ответа, или в файловой системе есть какой-то файл, или эти XML-данные поступают из какого-либо другого источника, например, из очереди?
2. Привет, я пытаюсь использовать XML в качестве ответа, поступающего от Tally.
Ответ №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.