Java JAXB解析xml文档 美元/欧元 0.8990 2/17/2016 晚上9:26 0.8991 0.8990 美元/乌克兰格里夫纳 26.9000 2/17/2016 晚上9:25 27 26.9000

Java JAXB解析xml文档 美元/欧元 0.8990 2/17/2016 晚上9:26 0.8991 0.8990 美元/乌克兰格里夫纳 26.9000 2/17/2016 晚上9:25 27 26.9000,java,xml,jaxb,Java,Xml,Jaxb,我试图通过以下代码解析此文档: <?xml version="1.0" encoding="UTF-8"?> <query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="2" yahoo:created="2016-02-17T21:25:49Z" yahoo:lang="en-US"> <results> <rate id="USDEUR">

我试图通过以下代码解析此文档:

<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="2" yahoo:created="2016-02-17T21:25:49Z" yahoo:lang="en-US">
   <results>
      <rate id="USDEUR">
         <Name>USD/EUR</Name>
         <Rate>0.8990</Rate>
         <Date>2/17/2016</Date>
         <Time>9:26pm</Time>
         <Ask>0.8991</Ask>
         <Bid>0.8990</Bid>
      </rate>
      <rate id="USDUAH">
         <Name>USD/UAH</Name>
         <Rate>26.9000</Rate>
         <Date>2/17/2016</Date>
         <Time>9:25pm</Time>
         <Ask>27.0000</Ask>
         <Bid>26.9000</Bid>
      </rate>
   </results>
</query>
@XmlRootElement(name=“query”)
@XmlAccessorType(XmlAccessType.FIELD)
公共类查询{
公共列表速率=新建ArrayList();
@xmlement(name=“rate”)
公共void setQuery(列表速率)
{
这个比率=比率;
}
@凌驾
公共字符串toString(){
返回“查询{”+
“速率=”+速率+
'}';
}
}
/////////////////////////////////////////////////////////////////////////
@XmlRootElement(name=“rate”)
公费{
字符串id;
@xmlement(name=“id”)
公共无效集合id(字符串id){
this.id=id;
}
串速率;
@xmlement(name=“rate”)
公共无效设置率(字符串率){
这个比率=比率;
}
}
//////////////////////////////////////////////
File File=新文件(“E://xml//2.xml”);
JAXBContext JAXBContext=JAXBContext.newInstance(Query.class);
解组器jaxbUnmarshaller=jaxbContext.createUnmarshaller();
Query mu=(Query)jaxbUnmarshaller.unmarshal(文件);
系统输出打印项数(mu);
怎么了? 三次重写类,在此变体上停止

在控制台中:
Query{rate=[]}

ArrayList
Rate与文档中的节点不关联
//虚拟文本

你的课程错了

Query.java

@XmlRootElement(name="query")
@XmlAccessorType(XmlAccessType.FIELD)
public class Query {

   public List<Rate> rate = new ArrayList<>();

    @XmlElement( name = "rate" )
    public void setQuery( List rate )
    {
        this.rate = rate;
    }
       @Override
  public String toString() {
    return "Query{" +
            "rate=" + rate +
            '}';
}
}

/////////////////////////////////////////////////////////////////////////




 @XmlRootElement( name = "rate" )
    public class Rate {
        String id;

        @XmlElement( name = "id" )
        public void setId(String id){
            this.id = id;
        }

        String rate;

        @XmlElement( name = "rate" )
        public void setRate(String rate){
            this.rate = rate;
        }
    }
//////////////////////////////////////////////

File file = new File("E://xml//2.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Query.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Query mu = (Query) jaxbUnmarshaller.unmarshal(file);
System.out.println(mu);
@XmlRootElement(name="query")
@XmlAccessorType(XmlAccessType.FIELD)
public class Query {

    @XmlElementWrapper
    @XmlElement(name="rate")
    private List<Rate> results;

    public List<Rate> getRate() {
        return results;
    }

    public void setRate(List<Rate> rate) {
        this.results = rate;
    }
}

你有什么错误吗?提供的代码发生了什么情况?Plase,用您收到的错误更新您的问题,以便我们可以帮助您。谢谢。那个注释是什么意思?程序在没有它的情况下工作@XmlType(name=“rate”,proporter={“rate”}无论如何,您可以自由投票。
@XmlRootElement( name = "rate" )
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "rate", propOrder = {
        "rate"
    })
public class Rate {

    @XmlAttribute(name="id")
    private String id;

    @XmlElement(name="Rate")
    private String rate;

    public String getId() {
        return id;
    }

    public void setId(String id){
        this.id = id;
    }

    public String getRate() {
        return rate;
    }

    public void setRate(String rate) {
        this.rate = rate;
    }


}