質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1592閲覧

インスタンスメソッドの使い方がわかりません

yuki_90453

総合スコア326

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2017/02/22 10:10

編集2017/02/22 10:11

いつもお世話になっております。

RubyのREXMLクラスのインスタンスメソッドを使用したいのですがいまいち使い方がわからず困っています。
使用したいインスタンスメソッドは、compactというメソッドでREXMLの改行させないようにしたいと考えております。
検索したのですが、このインスタンスメソッドを使用した例が見つからないので、どのように使えばいいかわかりません。
どなたかアドバイスお願い致します。

REXMLクラス

comact インスタンスメソッド

とりあえず思いついた方法。しかし上手く行きません。

format = REXML::Formatters::Pretty.new.compact=true

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

REXML は私も知りませんが、 compact= はノード内のテキストの空白を除去するもののようです。

xml

1<hoge> 2 fuga 3</hoge>

↑こんなのを ↓ こんなのにするみたいです。

xml

1 <hoge> fuga </hoge>

・・・まだ空白入っていると思うんですけどね。
改行と空白を除去するなら泥臭いですがこんな感じ↓でやるしかないかも知れませんね。

ruby

1require 'rexml/document' 2require 'rexml/formatters/pretty' 3doc = REXML::Document.new <<EOS 4<root> 5 <children> 6 <grandchildren foo='bar'> 7 hoge 8 </grandchildren> 9 </children> 10</root> 11EOS 12 13pretty_formatter = REXML::Formatters::Pretty.new 14output = StringIO.new 15pretty_formatter.write(doc, output) 16 17# 改行 \n とタグ間がからの場合の空白を除去。 タグ(ノード)内の空白はそのまま 18puts output.string.delete("\n").gsub(/> *?</,'><')

↑で↓が得られます。

xml

1<root><children><grandchildren foo='bar'> hoge </grandchildren></children></root>

タグ内のテキストを詰めたいなら pretty_formatter.compact=true をすれば下記のようになります。

xml

1<root><children><grandchildren foo='bar'> hoge </grandchildren></children></root>

投稿2017/02/27 08:28

編集2017/02/27 08:30
ichiroc

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

簡単な使い方はるりまにもありますが、このREXML::Formatters::Prettyは、

  1. まずインスタンスを作成して、スタイルをセットする
  2. インスタンスのwriteメソッドにノードを渡して、出力結果を得る

という流れで使います。

投稿2017/02/22 12:38

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問