我的供应商提供以下供稿, http://scores.cricandcric.com/cricket/getFeed?key=4333433434343&format=xml&tagsformat=long&type=schedule
我想将xml文件中的数据作为java对象获取,以便我可以定期插入到我的数据库中。 以上数据只是供应商的定期更新,因此我可以在我的网站上更新。
你可以告诉我有什么选择可以让你的工作
我应该使用任何网络服务还是只使用Xstream 得到我的最终输出..请建议我作为这个概念的新来者
供应商建议我他可以用以下3种格式rss,xml或json给我数据,我不确定什么是简单的,耗时少,以使其正常工作
答案 0 :(得分:1)
我建议只编写一个解析XML的程序并将数据直接插入到数据库中。
这个groovy脚本将数据插入H2数据库。
//
// Dependencies
// ============
import groovy.sql.Sql
@Grapes([
@Grab(group='com.h2database', module='h2', version='1.3.163'),
@GrabConfig(systemClassLoader=true)
])
//
// Main program
// ============
def sql = Sql.newInstance("jdbc:h2:db/cricket", "user", "pass", "org.h2.Driver")
def dataUrl = new URL("http://scores.cricandcric.com/cricket/getFeed?key=4333433434343&format=xml&tagsformat=long&type=schedule")
dataUrl.withReader { reader ->
def feeds = new XmlSlurper().parse(reader)
feeds.matches.match.each {
def data = [
it.id,
it.name,
it.type,
it.tournamentId,
it.location,
it.date,
it.GMTTime,
it.localTime,
it.description,
it.team1,
it.team2,
it.teamId1,
it.teamId2,
it.tournamentName,
it.logo
].collect {
it.text()
}
sql.execute("INSERT INTO matches (id,name,type,tournamentId,location,date,GMTTime,localTime,description,team1,team2,teamId1,teamId2,tournamentName,logo) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", data)
}
}
答案 1 :(得分:0)
嗯......您可以使用XML Parser(流或DOM)或JSON解析器(再次是'DOM'流),并动态构建对象。但是这些数据 - 似乎包括板球比赛的记录,为什么不采用csv格式呢?
这似乎是您的基本“基准”:
<id>1263</id>
<name>Australia v India 3rd Test at Perth - Jan 13-17, 2012</name>
<type>TestMatch</type>
<tournamentId>137</tournamentId>
<location>Perth</location>
<date>2012-01-14</date>
<GMTTime>02:30:00</GMTTime>
<localTime>10:30:00</localTime>
<description>3rd Test day 2</description>
<team1>Australia</team1>
<team2>India</team2>
<teamId1>7</teamId1>
<teamId2>1</teamId2>
<tournamentName>India tour of Australia 2011-12</tournamentName>
<logo>/cricket/137/tournament.png</logo>
当然你仍然需要解析一个csv,并处理字符分隔(例如当你在一个字符串中有一个'或'),但它会大大减少你的网络流量,并且可能解析得更快在客户端。当然,这取决于您的客户是什么。
答案 2 :(得分:0)
实际上你有RESTful商店,它可以以多种格式返回数据,你只需要阅读这个来源,不需要进一步的交互。 因此,您可以使用任何XML Parser来解析XML数据,并将提取的数据放入您想要的任何数据结构中。
我没有听说过XTREME,但您可以在this StackOverflow question找到有关为您的情况选择最佳解析器的更多信息。