如何在OpenLaszlo XML数据集中向节点添加全新属性?
答案 0 :(得分: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">
&lt; dataset name =“myData”&gt;
&LT; myXML&GT;
&lt; person firstname =“Homer”lastname =“Simpson”/&gt;
&lt; person firstname =“Marge”lastname =“Simpson”/&gt;
&lt; person firstname =“Montgomery”lastname =“Burns”/&gt;
&LT; / myXML&GT;
&LT; /数据集&GT;
&lt; button text =“displayXML”&gt;
<handler name="onclick">
Debug.write(canvas.myData.serialize());
</handler>
&LT; /按钮&GT;
&lt; button text =“updateAttribute”&gt;
<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>
&LT; /按钮&GT;
&LT; /画布&GT;
您还将看到对setNodeAttribute()的多次调用不会添加额外的“fav_saying”属性。如果程序每次使用不同的值,那么'fav_saying'属性中的值会改变,但仍然只有一个'fav_saying'属性。