2016-11-22 8 views
-6

私はいくつかのルビー条件を持つXMLファイルを持っています。私は、XMLコンテンツを使用する前に、ファイルとはevalそれを読んでもらいたいです。ruby​​で '<'で文字列を評価できません

ここでは簡単にするために、テストケースを示します。

str1='<?xml version="1.0" encoding="UTF-8"?>' 
str2='if 1+1 == 2 then "yes" end' 
eval(str1) 

eval(str2)は常に動作しますが、str1は動作しません。私は以下のエラーを取得しています。

(eval):1: syntax error, unexpected '<' 
<?xml version="1.0" encoding="UTF-8"?> 
^ 
(eval):1: syntax error, unexpected tIDENTIFIER, expecting end-of-input 
<?xml version="1.0" encoding="UTF-8"?> 
          ^
(repl):5:in `eval' 
(repl):5:in `<main>' 

私は '<'と '?'をエスケープしたいと思います。私は一重引用符を使用して補間を無効にすることはできません。 XMLはevalを時に実行されるいくつかのルビーの条件が含まれていますので。

は、任意のヘルプ

EDIT感謝: をポストの最初の行を確認してください。それは 'それにルビーの状態でXMLファイル'と言う。私は条件を評価したかった。

我々はそれを補間/評価するために二重引用符で囲まれた文字列内のルビーコードを埋め込むと

は、私はそれ有効なルビー式にするために、これは接頭辞や接尾辞である何ができると思いました。 (e.b str1 = "a =#{str1}"またはevalの前に似たもの)。私が与えた例はそれの抜粋です。

+5

'eval'は何をしていますか?もしそうなら、どのような結果が最初の文字列を評価することを期待していましたか? –

+0

"それは 'それにルビー条件付きXMLファイル'と言います。条件を評価したいと思います。" - 次に、__only条件を評価します.__ XMLマークアップをルビとして評価しないでください。そういうわけで、あなたはエラーを受け取ります。 –

答えて

3

evalは、表現がの有効なRubyコードを表す文字列を想定しています。

+1

私は彼がXMLテンプレートをしたいと思うので(それゆえERBを使うべきです)、これを確認して答えを書くのは怠惰です。あなたがしたい場合は、いくつかの無料の担当者があります:) –

+1

@SergioTulentsev私はそれを展開するよりも答えを取り除く方が簡単だろうと思っています。あなたの更新されたアバターを見るのは珍しいと感じています - ここで活動を開始して以来、私はあなたの古いものを覚えています:) –

+0

ええ、それはあまりにも古かったです。 D –

関連する問題