簡體   English   中英

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}的未定義局部變量或方法'action'(NameError)

您不能隨機假設變量存在。 令牌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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM