2012-02-04 16 views
0

私はRuby 1.8.7を使用しており、XMLコンテンツをAPIレスポンスの文字列として持っています。私は、HTMLタグをエスケープ解除できるように、この応答を解析したい:XMLからHTMLタグをエスケープ解除するにはどうすればよいですか?

<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<response>\n <data>\n <publisher_share_percent>0.0</publisher_share_percent>\n <detailed_description>&lt;b&gt;this is the testing detailed&lt;/b&gt; </detailed_description>\n <title>Only &#163;5.00. food (Regular &#163;50.00/90% discount)</title>\n </data>\n <request_id>ed96dd50-3127-012f-3e93-042b2b8686e6</request_id>\n <message>The resource has been created successfully.</message>\n <status>201</status>\n</response>\n 

答えて

2

あなたはCGI::unescapeHTMLを使用することができます。

require 'cgi' 
CGI::unescapeHTML("Usage: foo &quot;bar&quot; &lt;baz&gt;") 
# => "Usage: foo \"bar\" <baz>" 
0

あなたはそれが何であるか、XMLとしてXMLを扱う、そしてXMLパーサを使用してそれを解析した場合、タスクを簡単に取得します。

require 'nokogiri' 

xml = <<EOT 
<?xml version="1.0" encoding="UTF-8"?> 
<response> 
    <data> 
    <publisher_share_percent>0.0</publisher_share_percent> 
    <detailed_description>&lt;b&gt;this is the testing detailed&lt;/b&gt; </detailed_description> 
    <title>Only &#163;5.00. food (Regular &#163;50.00/90% discount)</title> 
    </data> 
    <request_id>ed96dd50-3127-012f-3e93-042b2b8686e6</request_id> 
    <message>The resource has been created successfully.</message> 
    <status>201</status> 
    </response> 
EOT 

doc = Nokogiri::XML(xml) 
puts doc.at('detailed_description').text 
puts doc.at('title').text 

保存とファイル出力を実行している:

ruby ~/Desktop/test2.rb 
<b>this is the testing detailed</b> 
Only £5.00. food (Regular £50.00/90% discount) 
関連する問題