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;
}
}