您好,我是Jaxb新手,已经花了3个多小时搜索这个NullPointerException和这个解编组的东西,但没有找到适合我的东西。我尝试了inputStream、StringReader和Buffered reader,但当我试图将XML文件解压缩到java对象时,所有这些都导致了空值,下面是一个例外:
@XmlRootElement(name = "supplier")
@XmlAccessorType(XmlAccessType.FIELD)
public class SupplierDto {
@XmlAttribute
private String name;
@XmlAttribute(name = "is-importer")
private Boolean isImporter;
public SupplierDto() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Boolean getImporter() {
return isImporter;
}
public void setImporter(Boolean importer) {
isImporter = importer;
}
@XmlRootElement(name = "suppliers")
@XmlAccessorType(XmlAccessType.FIELD)
public class SupplierRootDto {
@XmlElement
private List<SupplierDto> supplierDtos;
public SupplierRootDto() {
}
public List<SupplierDto> getSupplierDtos() {
return supplierDtos;
}
public void setSupplierDtos(List<SupplierDto> supplierDtos) {
this.supplierDtos = supplierDtos;
}
JAXBContext context = JAXBContext.newInstance(SupplierRootDto.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
String path = "suppliers.xml";
BufferedReader reader = new BufferedReader(new FileReader(new
File(path)));
SupplierRootDto list = (SupplierRootDto)
unmarshaller.unmarshal(reader);
for (SupplierDto supplierDto : list.getSupplierDtos()) {
this.supplierRepository.saveAndFlush(this.modelMapper.map(supplierDto,
Supplier.class));
}
这是XML文件:
<?xml version="1.0" encoding="utf-8"?>
<suppliers>
<supplier name="3M Company" is-importer="true"/>
<supplier name="Agway Inc." is-importer="false"/>
<supplier name="Anthem, Inc." is-importer="true"/>
<supplier name="Airgas, Inc." is-importer="false"/>
<supplier name="Big Lots, Inc." is-importer="true"/>
<supplier name="Caterpillar Inc." is-importer="false"/>
<supplier name="Casey's General Stores Inc." is-importer="true"/>
<supplier name="Cintas Corp." is-importer="false"/>
<supplier name="Chubb Corp" is-importer="true"/>
<supplier name="Cintas Corp." is-importer="false"/>
<supplier name="CNF Inc." is-importer="true"/>
<supplier name="CMGI Inc." is-importer="true"/>
<supplier name="The Clorox Co." is-importer="false"/>
<supplier name="Danaher Corporation" is-importer="true"/>
<supplier name="E.I. Du Pont de Nemours and Company" is-
importer="false"/>
<supplier name="E*Trade Group, Inc." is-importer="true"/>
<supplier name="Emcor Group Inc." is-importer="true"/>
<supplier name="GenCorp Inc." is-importer="false"/>
<supplier name="IDT Corporation" is-importer="true"/>
<supplier name="Level 3 Communications Inc." is-importer="false"/>
<supplier name="Merck & Co., Inc." is-importer="true"/>
<supplier name="Nicor Inc" is-importer="false"/>
<supplier name="Olin Corp." is-importer="true"/>
<supplier name="Paychex Inc" is-importer="true"/>
<supplier name="Saks Inc" is-importer="false"/>
<supplier name="Sunoco Inc." is-importer="true"/>
<supplier name="Textron Inc" is-importer="true"/>
<supplier name="VF Corporation" is-importer="false"/>
<supplier name="Wyeth" is-importer="true"/>
<supplier name="Zale" is-importer="false"/>
</suppliers>
问题是POJOS+注释不能正确映射到提供的XML。具体地说,在“SupplierRootDto”字段中,“SupplierDtos”需要更改或使用注释来重写如下:
@XmlRootElement(name = "suppliers")
@XmlAccessorType(XmlAccessType.FIELD)
public class SupplierRootDto {
// ADD NAME TO MATCH THE XML ELEMENT
@XmlElement(name = "supplier")
private List<SupplierDto> supplierDtos;
public SupplierRootDto() {
}
public List<SupplierDto> getSupplierDtos() {
return supplierDtos;
}
public void setSupplierDtos(List<SupplierDto> supplierDtos) {
this.supplierDtos = supplierDtos;
}
}
然后它将正确地解封。
XML响应 我为电影和图像创建了pojo类。 Film.java 形象JAVA 请帮助我是新来的,我应该使用JAXB。 解决方案: 我已经加了 在Image的getter方法中,我添加了@xmlement(name=“Image”)。 在Image类中,我添加了一个注释@XmlRootElement(name=“Image”),它提供了我想要的东西。
我有以下JPQL查询: 这应该返回所有对具有NULL的。 但是,我正在运行代码并进行调试,我看到返回的集合包含此字段为null的实体。 这是JPQL中的错误吗?
实际上,我试图在我的代码中实现如此基本的东西。我有一个json文件。然后我想读取这个json文件并将其转换为Java对象。为了处理它,我使用了gson,但不知何故,它为嵌套对象返回null。 JSON: TestJSON: 最后,我尝试从json文件中读取它: 但是最后,当我试图到达时,它给出了null。有什么建议吗?
问题内容: 我正在制作一个应用,该应用使用Volley Networking Library for Android从URL获取a 并从其中检索JSON数据。 AppController.java MainActivity.class中的方法 它给出以下错误: 我该如何纠正此代码? 问题答案: 您需要扩展Application类而不是AppCompatActivity类。 并记住也要更新清单。即。
在将Apache Camel从2.20.4升级到2.21.2甚至2.22.1之后,我的单元测试失败了,我不知道为什么。 我有一个接收XML响应的路由,我希望将其解封到一个数据类中。这在Apache Camel 2.21.2之后失败。 JAXB上下文知道给定包中的所有数据类,并选择正确的类。创建了正确的对象本身,但属性保持为NULL。在调试SAX解析器时,SAX解析器似乎故意忽略了标记之间的文本。
问题内容: 如果一个方法填充/修改了一个对象,是否最好返回该对象或将返回类型保持为空,并且该方法将通过其引用来修改该对象? 我知道这是一个琐碎的问题,但是哪个是最优选的? 问题答案: 我取决于您的样式,但是返回的优点之一是:您可以调用,即可以链接方法调用。 例如,看看这是怎么做的,它允许这样的事情