首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby 2.2使用REXML

Ruby 2.2使用REXML
EN

Stack Overflow用户
提问于 2015-04-14 16:01:46
回答 1查看 269关注 0票数 1

我已经学习了很多关于Ruby2.2和REXML的教程。这是我的xml的一个例子:

代码语言:javascript
复制
<msg user='Karim'><body action='ChkUsername' r='0'><ver v='153' /></body></msg>

这就是我目前的代码:

代码语言:javascript
复制
        xml =    "<msg user='Karim'><body action='ChkUsername' r='0'><ver v='153' /></body></msg>"
        doc = Document.new xml
        puts doc.root.attributes[action]

那不管用。出现了一个错误。#{classname} (NameError)的未定义局部变量或方法“action”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-14 16:03:56

你不能随机地假设变量存在。令牌action将被解释为引用(例如,变量或方法调用),因为它不是字符串或符号。你没有那个变量或方法,所以你会得到一个错误,准确地告诉你出了什么问题。

代码语言:javascript
复制
puts doc.root.attributes['action']

文档的根是<msg>标记。<msg>标记没有属性action。它有一个user属性,如您所期望的那样可以访问:

代码语言:javascript
复制
 > require 'rexml/document'
 > xml = "<msg user='Karim'><body action='ChkUsername' r='0'><ver v='153' /></body></msg>"
 > doc = REXML::Document.new(xml)
 > doc.root.attributes['user']
=> "Karim"

action属性进一步嵌套在文档中,在<body>元素中。

有许多方法可以询问文档(教程中都提到了这些方法),例如,

代码语言:javascript
复制
 > doc.elements.each('//body') do |body|
 >   puts body.attributes['action']
 > end
ChkUsername
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29632110

复制
相关文章

相似问题

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