2011-08-01 8 views
1

相当の文字列をREXML::Elementに渡して、文字列がXMLとして解析され、見つかった要素がターゲットに挿入されるようにする方法はありますか?REXML:javascript-DOMの.innerHTML =

答えて

1

として内部コンテンツを返します。

JS innerHTMLを使用すると、テキストまたはHTMLをワンショットで挿入でき、変更はすぐにHTMLドキュメントに表示されます。 REXMLでこれを行う方法を知っている唯一の方法は、コンテンツ/要素を挿入し、文書を保存/再ロードするための別々の手順です。

特定のREXML Elemementのテキストを変更するには、text =()メソッドを使用できます。

#e represents a REXML Element 
e.text = "blah" 

あなたはadd_element()メソッドを使用する必要が別の要素を挿入したい場合。

#e represents a REXML Element 
e.add_element('blah')  #adds <blah></blah> to the existing element 
b = e.get_elements('blah') #empty Element named "blah" 
b.text('some text')  #add some text to Element blah 

もちろん、変更を加えたXML文書を保存してください。 ruby-doc.org/REXML/Element

+0

質問を投稿してから数ヶ月が経過していますが、基本的にJSのinnerHTML機能が欲しいと思っていました。私は、既存のドキュメントに最初に解析することなく、ダンプするだけの外部XMLをいくつか持っていました。まぁ。 – rampion

+0

心配はいりません。既存のHTMLドキュメントに外部XMLをダンプすることを考えているなら、[w3schools.com](http://www.w3schools.com/dom/dom_loadxmldoc.asp)に行く方法がJavascriptでしょう。それ以外の場合は、文字列を__doc = Document.new( ' ...')に渡して新しいREXMLドキュメントを作成します。__doc.write(output = File.open( 'blah.xml'、 'w'))__ – rbnewb

-1

text()あなたは、さらにあなたが念頭に置いていたまさに説明するための例を提供することができればそれが役立つだろう文字列

1

REXML :: Elementクラスを拡張して、以下に示すようにinnerHTMLを含めることができます。

次に、JavaScriptの場合と同じようにinnerHTMLを使用できます(多かれ少なかれ)。

require "rexml/document" 
doc = REXML::Document.new "<xml><alice><b>bob</b><chuck>ch<u>u</u>ck</chuck></alice><alice/></xml>" 

c = doc.root.get_elements('//chuck').first 
t = c.innerHTML 
c.innerHTML = "#{t}<david>#{t}</david>" 
c = doc.root.get_elements('//alice').last 
c.innerHTML = "<david>#{t}</david>" 

doc.write($stdout, 2)