2016-03-30 16 views
-3

いくつかのXMLファイルの並列比較を出力するために、Rubyで2x2テーブルを作成したいとします。最初の行は単にヘッダーになり、次の行はファイルになります。RubyでどのようにHTMLテーブルを作成しますか?

+0

RubyまたはRuby on Rails? –

+0

申し訳ありませんが、指定する必要があります。 Ruby – DemoNK

+0

XMLからどのくらい表示したいですか?それのすべて ?それぞれのXMLコンテンツをそれぞれダンプするだけでいいですか、ビジュアルな行ごとの比較をしたいのですか? – babgyy

答えて

0

私が理解から、そのような非常に簡単なスクリプトは、仕事をすることができますが、私はあなたの質問から何か見逃している可能性があります:あなたはそれの上にかなり-インデントを持つようにしたい場合は

# Assuming your xml files are xml1.xml and xml2.xml, this will create an HTML file called result.html containing the HTML table 
html = "" 
html += "<html>" 
html += "<table>" 
html += "<tr><td>First XML File</td><td>Second XML file</td></tr>" 
html += "<tr>" 
html += "<td>" 
html += File.read("xml1.xml", :encoding => "UTF-8").encode(:xml => :text) 
html += "</td>" 
html += "<td>" 
html += File.read("xml2.xml", :encoding => "UTF-8").encode(:xml => :text) 
html += "</td>" 
html += "</tr>" 
html += "</table>" 
html += "</html>" 

%x(echo '#{html}' >> "result.html") 

を、 RubyコアのREXML :: Documentを組み込むことができます。また、あまりにもインデントされたXMLを表示するには、preタグでネストしなければなりません。

require "rexml/document" 

doc1 = REXML::Document.new File.read("xml1.xml", :encoding => "UTF-8") 
out1 = "" 
doc1.write(out1, 2) 

doc2 = REXML::Document.new File.read("xml2.xml", :encoding => "UTF-8") 
out2 = "" 
doc2.write(out2, 2) 

html="" 
html += "<html>" 
html += "<table>" 
html += "<tr><td>First XML File</td><td>Second XML file</td></tr>" 
html += "<tr>" 
html += "<td><pre>" 
html += out1.encode(:xml => :text) 
html += "</pre></td>" 
html += "<td><pre>" 
html += out2.encode(:xml => :text) 
html += "</pre></td>" 
html += "</tr>" 
html += "</table>" 
html += "</html>" 

%x(echo '#{html}' >> "result.html") 
+0

私が実際に読んだXMLがそのフォーマットを保持していないという問題が実際に発生しています。何か案は? – DemoNK

+0

フォーマットのどの部分が失われていますか?それはいくつかの文字が変更されますか?または、インデントがきれいではないのですか? – babgyy

+0

インデントがきれいではありません。ただ長い文字列で読み込み、行が途切れる – DemoNK

関連する問題