Flex:替换XML对象中的节点

时间:2010-01-25 12:05:57

标签: xml flex

我已经看了一些关于这个主题的相关帖子,但我无法弄清楚如何解决我的问题。我想这与星期一的事实有关。

嗯,这就是。我有一个XML对象包含:

<root>
   <page>
      <text>
         <style properties=""/>
         <label> Text one</label>
      </text>
      <text>
         <style properties=""/>
         <label> Text two</label>
      </text>
   </page>
   <page>
      <text>
         <style properties=""/>
         <label> Text three</label>
      </text>
      <text>
         <style properties=""/>
         <label> Text four</label>
      </text>
   </page>
</root>

我想用新的标签节点替换标签节点。我把新的一个放在XMLList中,但现在我仍然坚持用它来取代实际的节点。这就是XMLList的样子:

<page>
   <text>
      <style properties=""/>
      <label> Replace the first one</label>
   </text>
   <text>
      <style properties=""/>
      <label> Replace the second one</label>
   </text>
</page>
<page>
   <text>
      <style properties=""/>
      <label> Replace the third one</label>
   </text>
   <text>
      <style properties=""/>
      <label> Replace the fourth one</label>
   </text>
</page>

2 个答案:

答案 0 :(得分:2)

一个简单的例子:

// xml = your XML object    
xml.page[0].text[0].label = 'new text';
xml.page[0].text[1].label = 'new text 2';
trace (xml.toXMLString());

返回:

<root>
  <page>
    <text>
      <style properties=""/>
      <label>new text</label>
    </text>
    <text>
      <style properties=""/>
      <label>new text 2</label>
    </text>
  </page>
  <page>
    <text>
      <style properties=""/>
      <label>Text three</label>
    </text>
    <text>
      <style properties=""/>
      <label>Text four</label>
    </text>
  </page>
</root>

答案 1 :(得分:0)

您可以使用e4x获取XMMList,然后使用循环中的父函数或使用列表执行您想要的操作:

var r:XML=<root>
  <page>
    <text>
      <style properties=""/>
      <label>new text</label>
    </text>
    <text>
      <style properties=""/>
      <label>new text 2</label>
    </text>
  </page>
  <page>
    <text>
      <style properties=""/>
      <label>Text three</label>
    </text>
    <text>
      <style properties=""/>
      <label>Text four</label>
    </text>
  </page>
</root>;

var xl:XMLList=r.page.text.label;
// use the first element of the list
xl[0].parent().label="i do what i want";


var i:int=0;
// or loop over each elment if the list
for each (var xml:XML in xl){
    xml.parent().label=i + " : " + xml.toString();
    i++;
}