Как мне убрать теги HTML из XML? - PullRequest
0 голосов
/ 04 февраля 2012

Я использую Ruby 1.8.7 и имею XML-содержимое в виде строки, которая является ответом API. Я хочу разобрать этот ответ, чтобы я мог удалить теги 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 ]

2 голосов
/ 04 февраля 2012

Вы можете использовать CGI :: unescapeHTML .

require 'cgi'
CGI::unescapeHTML("Usage: foo &quot;bar&quot; &lt;baz&gt;")
# => "Usage: foo \"bar\" <baz>"
0 голосов
/ 05 февраля 2012

Если вы воспринимаете 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...