OpenLaszlo XMLデータセットのノードに新しい属性をどのように追加しますか?
1 に答える
これを行う方法は、lz.datapointer.setNodeAttribute()関数を使用することです。ノードにまだ表示されていない属性名でsetNodeAttribute()関数を使用すると、新しい属性名が作成されます。
以下のサンプルOpenLaszloアプリケーションでは、プログラムのコンパイル後に[displayXML]というタイトルのボタンを押すと、変更が行われる前のXMLデータセットに「fav_saying」属性が含まれていないことがわかります。
[updateAttribute]ボタンをクリックしてsetNodeAttribute()メソッドを介してHomerのお気に入りのことわざを追加した後、[displayXML]ボタンをもう一度クリックすると、「fav_saying」という属性がXMLデータセットに追加されていることがわかります。 。
<canvas height="665" width="1000" layout="axis: x" debug="true">
<dataset name = "myData">
<myXML>
<person firstname = "Homer" lastname = "Simpson" />
<person firstname = "Marge" lastname = "Simpson" />
<person firstname = "Montgomery" lastname = "Burns "/>
</ myXML>
</ dataset>
<button text = "displayXML">
<handler name="onclick">
Debug.write(canvas.myData.serialize());
</handler>
</ button>
<button text = "updateAttribute">
<handler name="onclick">
var dp = canvas.myData.getPointer(); // get datapointer to XML data
dp.setXPath('myXML/person[@firstname="Homer"]'); // set xpath to Homer Simpson
dp.setNodeAttribute('fav_saying', 'DOH!');
</handler>
</ button>
</キャンバス>
また、setNodeAttribute()を複数回呼び出しても、「fav_saying」属性が追加されないこともわかります。プログラムが毎回異なる値を発言に使用した場合、「fav_saying」属性の値は変更されますが、「fav_saying」属性は1つだけになります。