首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >groovy -问题解析xml

groovy -问题解析xml
EN

Stack Overflow用户
提问于 2011-04-13 15:50:33
回答 1查看 2.2K关注 0票数 5

我是Groovy新手,我试图解析有效的rest资源和无效的rest资源。例如:

这个密码很好-

代码语言:javascript
复制
def entity = new XmlSlurper().parse('http://api.twitter.com/1/users/show/slashdot.xml')
println entity.name()
println entity.screen_name.text()

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

代码语言:javascript
复制
user
slashdot

但是当我将一个无效的url传递给xmlSlurper时,像这样

代码语言:javascript
复制
def entity = new XmlSlurper().parse('http://api.twitter.com/1/users/show/slashdotabc.xml')
println entity.name()
println entity.screen_name.text(

)

我收到以下错误消息:

代码语言:javascript
复制
Caught: java.io.FileNotFoundException: http://api.twitter.com/1/users/show/slashdotabc.xml
    at xmltest.run(xmltest.groovy:1)

尽管url返回一个包含错误消息的哈希代码(如下面所示),但我想解析并显示它。

代码语言:javascript
复制
<hash>
<request>/1/users/show/slashdotabc.xml</request>
<error>Not found</error>
</hash>

我如何解析一个url,它返回一个404,但是带有错误信息?

任何帮助都将不胜感激。

-谢谢-你好,弗兰克·克哈特

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-13 17:17:36

您希望看到的响应在URL连接的errorStream上可用,而不是在inputStream上。幸运的是,给定InputStreamXmlSlurper.parse也可以读取InputStream

下面是一个示例,当您没有200种状态时,可以切换到读取errorStream

代码语言:javascript
复制
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)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5652036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档