java - 为什么使用 JAXB 解组将 sting xml 转换为对象的方法返回 null?
问题描述
我正在尝试将我的 xml 字符串转换为对象。我有以下代码,但是当我到达一个字段时,它返回 null。
@Override
public DatosInputDto convertXmlToDatosInputDto (String xml) {
DatosInputDto input = null;
try {
JAXBContext jaxbContext = JAXBContext.newInstance(DatosInputDto.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(xml);
input = (DatosInputDto) unmarshaller.unmarshal(reader);
} catch (JAXBException ex) {
LOGGER.error(ex.getMessage(), ex);
}
return input;
}
这是字符串的xml:
<?xml version="1.0" encoding="UTF-8"?>
<nd0:OU_SchemaPublic xmlns:nd0="http://www.prueba/cadena/ejemplo/1.00">
<nd0:TTT_Code>LIM28</nd0:TTT_Code>
<nd0:TTT_Date>20210622</nd0:TTT_Date>
<nd0:TTT_CodeType>0203</nd0:TTT_CodeType>
<nd0:TTT_Receiver>0098</nd0:TTT_Receiver>
<nd0:TTT_SenderPT>0092</nd0:TTT_SenderPT>
<nd0:TTT_DocumentFile>Documents</nd0:TTT_DocumentFile>
</nd0:OU_SchemaPublic>
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"code", "date", "codeType", "receiver", "senderPt","documentFile"})
@XmlRootElement(name = "OU_SchemaPublic")
public class DatosInputDto implements Serializable {
/**
*
*/
private static final long serialVersionUID = -4596758570871609534L;
private String code;
private String date;
private String codeType;
private String receiver
private String senderPt;
private String documentFile;
}
包信息
@javax.xml.bind.annotation.XmlSchema(
xmlns = {@javax.xml.bind.annotation.XmlNs(prefix = "nd0",
namespaceURI = "http://www.prueba/cadena/ejemplo/1.00")},
namespace = "http://www.prueba/cadena/ejemplo/1.00",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package com.prueba;
我的错误是什么?我需要添加或删除什么?
解决方案
您的 XML 属性名称与 Pojo 类不同。在字段上添加以下注释。
@XmlAttribute
private String code
如果不起作用,请按如下方式添加密钥名称。
@XmlAttribute(name="nd0:TTT_Code")
private String code
推荐阅读
- javascript - react js,它不返回令牌代码
- node.js - 错误:找不到模块“@heroku/buildpack-registry”
- java - 如何在spring数据mongo模板中分配对象而不是键值对
- c# - GetHashCode 使用派生类的元组实现
- javascript - 如何在 v-autocomplete 中搜索不作为项目的值
- regex - grep help - 搜索这个字符串:'$i['
- python - 如何将带有返回/多行的用户输入转换为 Python 中的字符串?
- jersey - 如何使用输入流实体而不是分块编码创建内容长度响应?
- laravel - Laravel 在带有 __() 的 abort() 错误消息中使用单词替换不起作用
- amazon-web-services - AWS lambda 自动扩展