groovy - 解析xml的问题

时间:2011-04-13 15:50:34

标签: groovy xmlslurper

我是Groovy的新手,我正在尝试解析有效​​的休息资源和无效资源。 例如:

此代码工作正常 -

def entity = new XmlSlurper().parse('http://api.twitter.com/1/users/show/slashdot.xml')
println entity.name()
println entity.screen_name.text()

当我运行它时,我得到输出:

user
slashdot

但是当我将无效的网址传递给xmlSlurper时,就像这样

def entity = new XmlSlurper().parse('http://api.twitter.com/1/users/show/slashdotabc.xml')
println entity.name()
println entity.screen_name.text(

我收到此错误消息:

Caught: java.io.FileNotFoundException: http://api.twitter.com/1/users/show/slashdotabc.xml
    at xmltest.run(xmltest.groovy:1)

虽然url返回一个哈希码(如下所示),但是我想解析并显示它。

<hash>
<request>/1/users/show/slashdotabc.xml</request>
<error>Not found</error>
</hash>

如何解析返回404但有错误信息的网址?

任何帮助将不胜感激。

- 谢谢&amp;问候, 弗兰克科弗特

1 个答案:

答案 0 :(得分:4)

您想要查看的回复可在网址连接的errorStream上找到,而不是inputStream。幸运的是,鉴于InputStreamXmlSlurper.parse也可以读取InputStream

以下是在您未获得200状态时切换为阅读errorStream的示例:

def con = new URL("http://api.twitter.com/1/users/show/slashdotaxxxbc.xml").openConnection()
def xml = new XmlSlurper().parse(con.responseCode == 200 ? con.inputStream : con.errorStream)