Java 如何从xml提要获取数据
我有我的供应商提供的以下提要, 我想从xml文件中获取数据作为java对象,这样我就可以定期插入数据库。 以上数据只不过是供应商的定期更新,所以我可以在我的网站上更新 你能告诉我我有什么办法可以让它工作吗 我应该使用任何Web服务还是仅仅 要得到我的最终输出。。请推荐我作为这个概念的新手Java 如何从xml提要获取数据,java,xml,parsing,Java,Xml,Parsing,我有我的供应商提供的以下提要, 我想从xml文件中获取数据作为java对象,这样我就可以定期插入数据库。 以上数据只不过是供应商的定期更新,所以我可以在我的网站上更新 你能告诉我我有什么办法可以让它工作吗 我应该使用任何Web服务还是仅仅 要得到我的最终输出。。请推荐我作为这个概念的新手 供应商建议我,他可以给我以下3种格式的数据:rss、xml或json,我不确定什么是容易的,不易消耗的,以使其正常工作。。。您可以使用XML解析器(流或DOM)或JSON解析器(同样是“DOM”流),并动态构
供应商建议我,他可以给我以下3种格式的数据:rss、xml或json,我不确定什么是容易的,不易消耗的,以使其正常工作。。。您可以使用XML解析器(流或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>
1263
2012年1月13日至17日在珀斯举行的澳大利亚诉印度第三次测试
测试匹配
137
珀斯
2012-01-14
02:30:00
10:30:00
第3次测试第2天
澳大利亚
印度
7.
1.
2011-12年澳大利亚印度之旅
/cricket/137/tourbank.png
当然,您仍然需要解析csv,并处理字符定界(例如字符串中有“或”时),但这将大大减少您的网络流量,并且可能在客户端上解析得更快。当然,这取决于您的客户端是什么。嗯……您可以使用XML解析器(流或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>
1263
2012年1月13日至17日在珀斯举行的澳大利亚诉印度第三次测试
测试匹配
137
珀斯
2012-01-14
02:30:00
10:30:00
第3次测试第2天
澳大利亚
印度
7.
1.
2011-12年澳大利亚印度之旅
/cricket/137/tourbank.png
当然,您仍然需要解析csv,并处理字符定界(例如,当字符串中有“或”时),但这将大大减少您的网络流量,并且可能在客户端上解析得更快。当然,这取决于您的客户机是什么。实际上,您有RESTful存储,可以返回多种格式的数据,您只需要从该源读取,无需进一步交互。 因此,您可以使用任何XML解析器来解析XML数据,并将提取的数据放入您想要或拥有的任何数据结构中
我没有听说过XTREME,但是您可以在中找到有关为您的情况选择最佳解析器的更多信息。实际上,您有RESTful存储,可以返回多种格式的数据,您只需要从该源读取,无需进一步交互。 因此,您可以使用任何XML解析器来解析XML数据,并将提取的数据放入您想要或拥有的任何数据结构中
我没有听说XTREME,但是您可以在找到有关为您的情况选择最佳解析器的更多信息。我建议只编写一个程序,解析XML并将数据直接插入数据库 例子 此groovy脚本将数据插入数据库
//
// 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)
}
}
我建议编写一个程序,解析XML并将数据直接插入数据库 例子 此groovy脚本将数据插入数据库
//
// 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)
}
}
我将“XTREME”重命名为“XStream”。后者是一个众所周知的XML解析库。现在的问题完全不同了:-)我把“XTREME”改名为“XStream”。后者是一个众所周知的XML解析库。现在完全不同的问题:-)