Ruby 2.2 使用 REXML
Ruby 2.2 Using REXML
我学习了很多关于 Ruby 2.2 和 REXML 的教程。这是我的例子 xml:
<msg user='Karim'><body action='ChkUsername' r='0'><ver v='153' /></body></msg>
这就是我目前的代码:
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'
你不能随意假设变量存在。标记 action
将被解释为引用(例如,变量或方法调用),因为它不是字符串或符号。你没有那个变量或方法,所以你会得到一个错误,告诉你到底出了什么问题。
puts doc.root.attributes['action']
您文档的根是 <msg>
标签。 <msg>
标签 没有 属性 action
。它有一个 user
属性,可以像您期望的那样访问:
> 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>
元素中。
有多种方法可以查询文档(顺便说一句,所有内容都包含在教程中),例如,
> doc.elements.each('//body') do |body|
> puts body.attributes['action']
> end
ChkUsername
我学习了很多关于 Ruby 2.2 和 REXML 的教程。这是我的例子 xml:
<msg user='Karim'><body action='ChkUsername' r='0'><ver v='153' /></body></msg>
这就是我目前的代码:
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'你不能随意假设变量存在。标记 action
将被解释为引用(例如,变量或方法调用),因为它不是字符串或符号。你没有那个变量或方法,所以你会得到一个错误,告诉你到底出了什么问题。
puts doc.root.attributes['action']
您文档的根是 <msg>
标签。 <msg>
标签 没有 属性 action
。它有一个 user
属性,可以像您期望的那样访问:
> 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>
元素中。
有多种方法可以查询文档(顺便说一句,所有内容都包含在教程中),例如,
> doc.elements.each('//body') do |body|
> puts body.attributes['action']
> end
ChkUsername