2016-10-18 5 views
0

Nokogiriドキュメントの属性値を置き換えるにはどうすればよいですか?私が使用して問題の属性を識別:Nokogiriのドキュメントのアトリビュート値を検索して置き換えるにはどうすればよいですか?

doc.xpath("//pre[@class='text-results']").xpath("meta[@http-equiv='Content-Type']").attr("content").to_s 

をしかし、私は試してみて、それに異なる値を代入するとき、何も私は右のそれをやっていないよと信じて私をリードされ、私のRailsコンソールに返されません取得されています

与えられたに答えるに応答して
2.3.0 :027 > doc.xpath("//pre[@class='text-results']").xpath("meta[@http-equiv='Content-Type']").attr("content") = "text/html; charset=iso8849"; 
2.3.0 :028 > 

エラー:

2.3.0 :005 > doc.xpath("//pre[@class='text-results']").xpath("meta[@http-equiv='Content-Type']")["content"] = "text/html; charset=iso8849" 
NoMethodError: undefined method `[]=' for #<Nokogiri::XML::NodeSet:0x007f820271c628> 
Did you mean? [] 
from (irb):5 
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/console.rb:110:in `start' 
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/console.rb:9:in `start' 
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:68:in `console' 
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
from /Users/davea/.rvm/gems/ruby-2.3.0/gems/railties-4.2.7.1/lib/rails/commands.rb:17:in `<top (required)>' 
from bin/rails:4:in `require' 
from bin/rails:4:in `<main>' 

私はRailsの4.2.7を使用しています。

+0

を更新したい場合は、私はスペルチェッカーを使用してお勧めしたい[]=方法

node["content"] = "text/html; charset=iso8849" 

を試してみてください。 Stack Overflowはオンラインの参考書で、スペルや文法が重要です。 –

+1

「[mcve]」をお読みください。あなたが書いたコードについて質問するときは、問題を示す最小限の入力データが必要です。この場合、最小のXMLになります。それがなければ、私たちは合うと思うものを生み出さなければなりません。それは答えが不正確になり、私たちの時間を無駄にして他人を助けることができなくなります。だから私たちがあなたを助けるのを助けてください。 –

答えて

1

は、あなたが最初の1

doc.xpath("//pre[@class='text-results']").xpath("meta[@http-equiv='Content-Type']").first["content"] = "text/html; charset=iso8849" 

それともすべてのノード

doc.xpath("//pre[@class='text-results']").xpath("meta[@http-equiv='Content-Type']").each { |node| node["content"] = "text/html; charset=iso8849" } 
+0

私はあなたの提案を試みたときに、 "NoMethodError:未定義のメソッド' [] = 'for#

+0

[OK]を、私は私の答えを更新しました。どのノードを更新するのかわかりません。 – Ursus

+0

'search '、' xpath'や 'css'に続いて' first'が使われるのではなく、 'at'かその変種' at_css'や 'at_xpath'を使います。 –

関連する問題