【发布时间】:2015-11-09 22:11:55
【问题描述】:
我试图弄清楚如何在 Eclipse 中将以下 XML 解析为 Java 类: http://finance.yahoo.com/webservice/v1/symbols/aapl/quote?format=xml&view=detail
我在this tutorial 之后尝试了它,但我无法让它工作。
我想要解析名称(Apple Inc.)和价格。 这是我的报价类(尝试使用和不使用注释参数):
import java.io.Serializable;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "Quote")
public class Quote implements Serializable {
private String name;
private Integer price;
public String getName() {
return name;
}
@XmlElement(name = "name")
public void setName(String name) {
this.name = name;
}
public Integer getPrice() {
return price;
}
@XmlElement(name = "price")
public void setPrice(Integer price) {
this.price = price;
}
这是我的助手类的相关部分,计划将多个引号存储在一个集合中:
import javax.xml.bind.JAXB;
...
public class QuoteService {
Set<Quote> quotes = new LinkedHashSet<>();
public void initializeQuotes() {
String s = "http://finance.yahoo.com/webservice/v1/symbols/aapl/quote?format=xml&view=detail";
try {
URL url = new URL(s);
Quote quote = JAXB.unmarshal(url, Quote.class);
quotes.add(quote);
}
catch (MalformedURLException e) {
e.printStackTrace();
}
public Set<Quote> getQuotes() {
return quotes;
}
}
执行 initializeQuotes() 后,我没有收到任何异常。但是,在使用以下代码打印所有内容后:
System.out.println(quoteService.getQuotes());
for (Quote quote : quoteService.getQuotes()) {
System.out.println(quote.getName());
System.out.println(quote.getPrice());
}
我明白了:
[quote.core.api.Quote@e36bb2a]
空
空
因此,很明显,创建了一个报价类,但它的属性(名称和价格)是空的,而不是包含相应的 XML 值(“Apple Inc.”和当前价格)。 我做错了什么?
【问题讨论】:
-
为什么不直接使用这个?:financequotes-api.com
-
如果我无法让解析工作,这似乎也能完成这项工作。感谢您的提醒!
标签: java xml xml-parsing jaxb yahoo-finance