我现在正在关注与JAXB编组/解组相关的线程一段时间。
当我尝试将Java对象转换为XML时,我遇到了问题,其中有一些接口。后来我发现这可以使用EclipseLink的MOxy来解决。@Bdoughan在这里的文章 http://blog.bdoughan.com/2012/07/jaxb-no-annotations-required.html,答案非常有帮助。但是现在,当我试图将生成的相同XML文件解构到Java对象中时,我遇到了问题。
这是界面。
public interface TimePeriod extends Serializable{
/**
* Return the end Time of the Time Period
*/
public Date getEndDate();
/**
* Return the startTime of the Time Period
*/
public Date getStartDate();
/**
* Sets the startTime of the Time period
*/
public void setStartDate(Date newStartDate);
/**
* Sets the endTime of the Time period
*/
public void setEndDate(Date newEndDate);
}
实现之一
TaskStepTimePeriod
public class TaskStepTimePeriod implements TimePeriod {
private Date taskStartDate;
private Date taskEndDate;
@Override
public Date getEndDate() {
return taskEndDate;
}
@Override
public Date getStartDate() {
return taskStartDate;
}
public void setTaskStartDate(Date newVal) {
this.taskStartDate = newVal;
}
public void setTaskEndDate(Date newVal) {
this.taskEndDate = newVal;
}
@Override
public void setStartDate(Date newStartDate) {
this.taskStartDate = newStartDate;
}
@Override
public void setEndDate(Date newEndDate) {
this.taskEndDate = newEndDate;
}
}
编组XML
<?xml version="1.0" encoding="UTF-8"?>
<plannedProgram>
<taskStep>
<endDate>2014-07-31T12:00:00.262+05:30</endDate>
<startDate>2014-06-01T12:00:00.262+05:30</startDate>
</taskStep>
</plannedProgram>
因此,当我尝试Unmarshall时,我得到这个错误堆栈跟踪。
Exception in thread "main" Local Exception Stack:
Exception [EclipseLink-63] (Eclipse Persistence Services - 2.6.1.v20150916-55dc7c3): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The instance creation method [com.cts.axb.model.TimePeriod.<Default Constructor>], with no parameters, does not exist, or is not accessible.
Internal Exception: java.lang.NoSuchMethodException: com.cts.axb.model.TimePeriod.<init>()
Descriptor: XMLDescriptor(com.cts.axb.model.TimePeriod --> [])
它说没有默认构造函数,但在接口中?我真的很想知道我做错了什么?
我错过了注释类中的任何元素吗?
我的解编组代码!!
try {
context = JAXBContext.newInstance(PlannedProgram.class);
Unmarshaller jaxbUnmarshaller = context.createUnmarshaller();
newMaintProg = (PlannedProgram) jaxbUnmarshaller.unmarshal(file);
System.err.println("XML file succesffuly read");
} catch (JAXBException e) {
System.err.println("Error Reading / Unmarshalling the XML file "+ e);
}
请参阅https://jaxb.java.net/guide/Mapping_interfaces.html.第3.2.2和3.2.3节最相关。
不过,您可能只需要在<code>PlannedProgram</code>中指定具体类型,例如。
private TaskStepTimePeriod taskStep;
问题内容: 我有一些代码已经被转储并实际上被卡住了-之前我已经使用过RPC和JSON方面的东西,但是当它在本地运行良好时,我似乎无法使其在RPC上正常工作。 (也在这里,但没有可用的TCP!http: //play.golang.org/p/HmK-K09D2J ) 输出令人惊讶,因为它表明编组而不是实际数据出了点问题- 在Wireshark中运行它,我可以看到数据以正确的格式发送(我在另一个问题
与marshall和unmarshall的读者和作者有争议。就是这样。这就是我如何向版画作者写东西的方式。 我是这样得到它的: 然后此解组操作将挂起。它没有给我任何东西,甚至没有例外。
问题内容: 我通过Rabbitmq消息系统获得了。在发送之前, 我使用,将结果转换为并通过Rabbitmq发送。 我转换和发送的结构可以是:(更改了结构的名称和大小,但这没有关系) 要么 消息完全像a一样经过,并打印在另一面(某些服务器) 到目前为止,一切正常。现在,我试图将它们转换回它们的结构并声明类型。 第一次尝试是通过: 这是行不通的。当在拆封后打印它的类型时,我得到(?!?) 甚至比这更奇
问题内容: 我有一个界面。 当我尝试创建这样的数组时会发生什么? 我如何实现此数组? 问题答案: 是的,有可能。您需要使用Type对象填充数组的字段 并且是实现Module接口的类。或者,您可以使用匿名内部类: 这回答了你的问题了吗?
ChartBuilder3.0版本的所有组件都提供JavaScript脚本编写和控制功能,ChartBuilder开放的组件控制接口包括如下几类: 组件样式控制 组件数据控制 辅助工具调用 组件动画控制 此文档适合ChartBuilder实施人员使用,在ChartBuilder工具上写JavaScript的时候,在输入this.之后,代码行也会给相应的API提示,选择API后再代码行里也会有辅助的
问题内容: 我写了代码: 现在,我将类型输出为。但是,我无法遍历接口数组。我遇到错误:。有人可以解释一下为什么吗?另外,有什么解决方法? 问题答案: 在类型开关中,如果您希望访问强制转换为适当类型的变量,则只需使用类似的命令,并且在每种情况下,开关将具有适当的值。规范中有一个例子。您甚至可以这样做,并且在switch语句中将有v的阴影版本。 例如: 还要注意,当您只想打印变量的类型时,可以只使用“