2015-07-11 52 views
0

我有一個XML文檔:添加引入nokogiri解析結果變量

<cred> 
<login>Tove</login> 
<pass>Jani</pass> 
</cred> 

我的代碼是:

require 'nokogiri' 
require 'selwet' 

context "parse xml" do doc = Nokogiri::XML(File.open("test.xml")) 
doc.xpath("cred/login").each do 

|char_element| 

puts char_element.text 

end 

should "check" do 
Unit.go_to "http://www.ya.ru/" 
Unit.click '.b-inline' 
Unit.fill '[name="login"]', @login 
end 

當我運行我的測試,我得到:

Tove 
0 

但我想要將解析結果插入@login。我怎樣才能得到解析結果的變量?是否需要將XML中的loginpass值插入網頁中的字段?

回答

0

我會使用這樣得到的數值:

require 'nokogiri' 

doc = Nokogiri::XML(<<EOT) 
<cred> 
<login>Tove</login> 
<pass>Jani</pass> 
</cred> 
EOT 

login = doc.at('login').text # => "Tove" 
pass = doc.at('pass').text # => "Jani" 

引入nokogiri使得它可以很方便的訪問值使用CSS,所以儘可能使用它來提高可讀性。同樣的事情可以使用XPath來完成:

login = doc.at('//login').text # => "Tove" 
pass = doc.at('//pass').text # => "Jani" 

而且不必增加//兩次完成同樣的事情通常是無用功。

重要的部分是at,它返回目標的第一個匹配項。 at允許我們使用CSS或XPath,但CSS通常在視覺上較差。

1

您可以從XML獲得登錄的價值與

@login = doc.xpath('//cred/login').text