Jaxb类有两个同名的属性

使用jaxb,我尝试读取xml文件
xml文件中只有少数元素是有趣的,所以我想跳过许多元素

xml内容

我尝试阅读的xml

<?xml version=“1.0”encoding=“UTF-8”?>
&lt--XMLSpy v2010 rel生成的示例XML文件。3 sp1(http://www.altova.com)--&燃气轮机;
<flx:ModeleREP xsi:schemaLocation=“urn:test:mod_rep.xsd mod_rep.xsd”xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“xmlns:flx=“urn:test:mod_rep.xsd”>
<flx:DocumentHeader>
<flx:Identification v=“04489”/>
&lt/flx:DocumentHeader>
<flx:TimeSeries>
<flx:Identification v=“test1a”/>
<flx:BusinessType v=“A01”/>
<flx:Product v=“123a”/>
<flx:ResourceObject codingScheme=“N”v=“testa”/>
<flx:周期>
<flx:TimeInterval v=“2011-07-02T00:00/2011-07-16T00:00”/>
<flx:分辨率v=“PT2H”/>
<flx:Pt>
<flx:P v=“1”/>
<flx:Q unitCode=“String”v=“1.0”/>
<flx:A currencyIdentifier=“String”v=“195.0”/>
&lt/flx:Pt>
&lt/flx:周期>
&lt/flx:TimeSeries>
<flx:TimeSeries>
<flx:Identification v=“test2a”/>
<flx:BusinessType v=“A01”/>
<flx:Product v=“a123b”/>
<flx:ResourceObject codingScheme=“N”v=“test2”/>
<flx:周期>
<flx:TimeInterval v=“2011-07-02T00:00/2011-07-16T00:00”/>
<flx:分辨率v=“PT2H”/>
<flx:Pt>
<flx:P v=“1”/>
<flx:Q unitCode=“String”v=“1.0”/>
<flx:A currencyIdentifier=“String”v=“195.0”/>
&lt/flx:Pt>
<flx:Pt>
<flx:P v=“2”/>
<flx:Q unitCode=“String”v=“1.0”/>
<flx:A currencyIdentifier=“String”v=“195.0”/>
&lt/flx:Pt>
&lt/flx:周期>
&lt/flx:TimeSeries>
&lt/flx:ModeleREP>

我的班级

@XmlRootElement(name=“ModeleREP”,namespace=“urn:test:mod_rep.xsd”)
公共类ModeleREP{
@xmlement(name=“TimeSeries”)
受保护列表<TimeSeries>TimeSeries;
公共列表<TimeSeries>getTimeSeries(){
if(this.timeSeries==null){
this.timeSeries=newarraylist<timeSeries>();
}
返回此.timeSeries;
}
public void setTimeSeries(列表<TimeSeries>TimeSeries){
this.timeSeries=timeSeries;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name=“TimeSeries”)
公共类时间序列{
@XmlElement(name=“ResourceObject”)
受保护的资源对象resourceObject;
@xmlement(name=“Period”)
保护期;
公共资源对象getResourceObject(){
返回此.resourceObject;
}
public void setResourceObject(RessourceObject resourceObject){
this.resourceObject=resourceObject;
}
公共期间getPeriod(){
返回此时间段;
}
公共无效设置期间(期间){
这个周期=周期;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name=“ResourceObject”)
公共类资源对象{
@XmlAttribute(name=“codingScheme”)
保护字符串编码模式;
@xmltattribute(name=“v”)
保护串v;
公共字符串getCodingScheme(){
返回此.codingScheme;
}
公共无效设置编码模式(字符串编码模式){
this.codingScheme=codingScheme;
}
公共字符串getV(){
归还这个;
}
公共无效setV(字符串v){
这个,v=v;
}
}
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name=“Period”)
公课期间{
@xmlement(name=“TimeInterval”)
受保护的时间间隔;
@xmlement(name=“Pt”)
受保护列表<Pt>Pt;
公共时间间隔getTimeInterval(){
返回此.timeInterval;
}
公共无效设置时间间隔(时间间隔时间间隔){
this.timeInterval=时间间隔;
}
公共列表<Pt>getPt(){
if(this.pt==null){
this.pt=新阵列列表<pt>();
}
返回此.pt;
}
公共无效设置点(列表<点>点){
这个.pt=pt;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name=“TimeInterval”)
公共类时间间隔{
@xmltattribute(name=“v”)
私有字符串时间间隔;
公共字符串getTimeIntervalPeriod(){
返回this.timeIntervalPeriod;
}
public void setTimeIntervalPeriod(字符串timeIntervalPeriod){
this.timeIntervalPeriod=timeIntervalPeriod;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name=“Pt”)
公务舱{
@xmlement(name=“P”)
保护磷;
@xmlement(name=“A”)
保护A;
公共P getP(){
把这个还给我;
}
公共无效setP(P){
这个,p=p;
}
公共A getA(){
归还这个;
}
公共无效setA(A){
这个a=a;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name=“P”)
公共P类{
@xmltattribute(name=“v”)
保护串位置;
公共字符串getPosition(){
返回此位置;
}
公共无效设置位置(字符串位置){
这个位置=位置;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name=“A”)
公共A类{
@xmltattribute(name=“v”)
受保护字符串的计算量;
公共字符串getCalculatedAmount(){
返回此.calculatedAmount;
}
公共void setCalculatedAmount(字符串calculatedAmount){
this.calculatedAmount=calculatedAmount;
}
}

当我尝试读取xlm文件时,我得到
我明白了

com.sun.xml.internal.bind.v2.runtime.illegalannotations异常:1个IllegalAnnotationExceptions计数
类有两个同名的属性“timeSeries”
此问题与以下位置有关:
在public java.util.List testjaxp.ModeleREP.getTimeSeries()中
在testjaxp.ModeleREP
此问题与以下位置有关:
在受保护的java.util.List testjaxp.ModeleREP.timeSeries
在testjaxp.ModeleREP

我不理解这个错误

编辑:我使用jaxb-impl-2.1.12

好的,现在我没有任何错误,但是当我检查我的对象时,timeSeries是空的

那么也许jaxb似乎对flx有问题

我也面临这样的问题,我设定了这个

@XmlRootElement(name=“yourRootElementName”)
@XmlAccessorType(XmlAccessType.FIELD)

这将100%有效

发表评论