Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从xml提要获取数据_Java_Xml_Parsing - Fatal编程技术网

Java 如何从xml提要获取数据

Java 如何从xml提要获取数据,java,xml,parsing,Java,Xml,Parsing,我有我的供应商提供的以下提要, 我想从xml文件中获取数据作为java对象,这样我就可以定期插入数据库。 以上数据只不过是供应商的定期更新,所以我可以在我的网站上更新 你能告诉我我有什么办法可以让它工作吗 我应该使用任何Web服务还是仅仅 要得到我的最终输出。。请推荐我作为这个概念的新手 供应商建议我,他可以给我以下3种格式的数据:rss、xml或json,我不确定什么是容易的,不易消耗的,以使其正常工作。。。您可以使用XML解析器(流或DOM)或JSON解析器(同样是“DOM”流),并动态构

我有我的供应商提供的以下提要,

我想从xml文件中获取数据作为java对象,这样我就可以定期插入数据库。 以上数据只不过是供应商的定期更新,所以我可以在我的网站上更新

你能告诉我我有什么办法可以让它工作吗

我应该使用任何Web服务还是仅仅 要得到我的最终输出。。请推荐我作为这个概念的新手


供应商建议我,他可以给我以下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解析库。现在完全不同的问题:-)