2009-12-08 157 views
1

如何将一个xml对象的值从一个xml对象复制到另一个空的xml对象。将XML数组从一个XML对象复制到另一个xml对象

我有一个来自xml数组的xml对象,需要将其复制到另一个xml对象。 如何从一个对象复制XML到另一个

如果我有解析XML对象 for循环和我得到的节点

var myXML:xml = new xml(); 
for(...) 
if(xmlObj.product[i].name == 'myproduct'){ 
    /// copy this to 'myXML' xml object .. how?? 


} 

trace(myXML) 
+0

你使用as3还是as2?你的问题被标记为两者,但是这两者之间的具体操作是完全不同的。 – grapefrukt 2009-12-08 09:11:07

+0

即时通讯问有关as3脚本 – coderex 2009-12-08 09:16:55

回答

2

这就是我可能会这样做,使用AS3的E4X功能。

private function copyMyProductXMLNodes():void 
{ 
    var xmlObj:XML = <productList><product name="notMyProduct">product 1</product><product name="myProduct">product 2</product><product name="notMyProduct">product 3</product><product name="myProduct">product 4</product></productList>; 
    var myXML:XML = <myProductList></myProductList>; 

    for each(var productItem:XML in xmlObj.product) 
    { 
     if([email protected] == 'myProduct') 
     { 
      myXML.appendChild(productItem.copy()); 
     } 
    } 

    trace(myXML.toXMLString()) 
} 

我实例化与myXML VAR与XML文本,而不是把它当作新的XML(),因为使用appendChild方法不能追加任何一个XML对象,直到它有一个顶级节点。

我很乐意在这段代码中增加一点评论,如果这会有所帮助的话。请让我知道。

2

尝试类似:

var newXml:XML = new XML(oldXml.toXMLString()); 
+0

如何只复制特定的孩子。 – coderex 2009-12-08 08:56:01

+0

然后使用var newXml:XML = new XML(xmlObj.product [i]); – longstaff 2009-12-08 09:32:37

+0

这只会在xml是单个元素(例如一个根标记)时起作用,否则您需要开始使用xmlList对象,请参阅http://www.kirupa.com/developer/flashcs3/using_xml_as3_pg1.htm – longstaff 2009-12-08 09:36:14