如何将全新的属性添加到 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 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>
</按钮>
</canvas>
您还将看到多次调用 setNodeAttribute() 不会添加额外的 'fav_saying' 属性。如果程序每次都使用不同的值作为说法,那么 'fav_saying' 属性中的值会改变,但仍然只有一个 'fav_saying' 属性。