如何在OpenLaszlo平台中向数据集节点添加新属性?

时间:2013-02-25 22:43:58

标签: openlaszlo lzx

如何在OpenLaszlo XML数据集中向节点添加全新属性?

1 个答案:

答案 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'属性。