【发布时间】:2021-12-15 21:18:24
【问题描述】:
我是 Jackson XML 的新手,我想做以下事情:
-
这是我想转换为 Java DTO 的 XML:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <cotacaoTaxaCambioResponse xmlns="http://tempuri.org/"> <cotacaoTaxaCambioResult xmlns:a="http://schemas.datacontract.org/2004/07/Exchange" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <a:TaxasCambio> <a:CotacaoTaxaCambio> <a:CLIENTEC>0</a:CLIENTEC> <a:CLIENTEV>0</a:CLIENTEV> <a:COMERCIALC>0</a:COMERCIALC> <a:COMERCIALV>30</a:COMERCIALV> <a:DATA>2021-12-15T00:00:00</a:DATA> <a:HORARIO>1027</a:HORARIO> <a:MOEDA>978</a:MOEDA> <a:PARIDADEC>1</a:PARIDADEC> <a:PARIDADEV>1</a:PARIDADEV> <a:TURISMOC>0</a:TURISMOC> <a:TURISMOV>30</a:TURISMOV> </a:CotacaoTaxaCambio> </a:TaxasCambio> <a:serviceStatus> <a:CODRETORNO>0</a:CODRETORNO> <a:MENSAGEM>Sucesso</a:MENSAGEM> <a:MENSAGEMEN>OK</a:MENSAGEMEN> <a:NRREFERENCE>0</a:NRREFERENCE> </a:serviceStatus> </cotacaoTaxaCambioResult> </cotacaoTaxaCambioResponse> </s:Body> </s:Envelope> -
我需要的信息是 a:CotacaoTaxaCambio 节点的属性。
-
创建了这个 DTO
@JacksonXmlRootElement(localName = "a:CotacaoTaxaCambio") public class CotacaoResDTO { @JacksonXmlProperty(localName = "a:DATA") private String data; @JacksonXmlProperty(localName = "a:HORARIO") private String hora; @JacksonXmlProperty(localName = "a:MOEDA") private String codMoeda; @JacksonXmlProperty(localName = "a:COMERCIALV") private Double valorComercial; @JacksonXmlProperty(localName = "a:TURISMOV") private Double valorTurismo; } -
如果我将此子集设置为输入,它确实有效:
<a:CotacaoTaxaCambio> <a:CLIENTEC>0</a:CLIENTEC> <a:CLIENTEV>0</a:CLIENTEV> <a:COMERCIALC>0</a:COMERCIALC> <a:COMERCIALV>30</a:COMERCIALV> <a:DATA>2021-12-15T00:00:00</a:DATA> <a:HORARIO>1027</a:HORARIO> <a:MOEDA>978</a:MOEDA> <a:PARIDADEC>1</a:PARIDADEC> <a:PARIDADEV>1</a:PARIDADEV> <a:TURISMOC>0</a:TURISMOC> <a:TURISMOV>30</a:TURISMOV> </a:CotacaoTaxaCambio>
但如果我将完整的 xml 设置为输入,它不会反序列化。
我可以使用任何配置或注释来存档吗?
提前致谢,
【问题讨论】:
标签: java jackson jackson-dataformat-xml