2014-01-07 37 views
0

我正在使用一些遗留代码,并且必须更新使用E4X构建的SOAP请求。我有一组数据需要循环并构建重复的XML段并将它们插入到SOAP请求中。我的伪例如...创建循环中E4X声明

var myData = ['apples','oranges','pears','grapes']; 

var myFruit; 
for(var i=0; i<myData.length; i++){ 
    myFruit += <fruit>{myData[i]}</fruit>; 
} 

var request = <soapenv:Envelope> 
<soapenv:Header></soapenv:Header> 
<soapenv:Body> 
    <MyFruitList> 
     {myFruit} 
    </MYFruitList> 
</soapenv:Body> 
</soapenv:Envelope>; 

这工作EXCEPT所有{} myFruit标签的出现已经越狱..它看起来像这样..

<soapenv:Envelope> 
<soapenv:Header></soapenv:Header> 
<soapenv:Body> 
    <MyFruitList> 
     &lt;fruit&gt;apples&lt;/fruit&gt; 
     &lt;fruit&gt;oranges&lt;/fruit&gt; 
     &lt;fruit&gt;pears&lt;/fruit&gt; 
     &lt;fruit&gt;grapes&lt;/fruit&gt; 
    </MYFruitList> 
</soapenv:Body> 
</soapenv:Envelope>; 

..这失败,则上我的SOAP请求的另一端...有什么帮助?

回答

1

这个问题的最终结果相当简单,但是是一个biiit hacky。

当我创建我的E4X对象我只是把一个占位符元素...实例...

var myData = ['apples','oranges','pears','grapes']; 

var myFruit; 
for(var i=0; i<myData.length; i++){ 
    myFruit += <fruit>{myData[i]}</fruit>; 
} 

var request = <soapenv:Envelope> 
    <soapenv:Header></soapenv:Header> 
    <soapenv:Body> 
     <MyFruitList> 
      <fruitList/> 
     </MyFruitList> 
    </soapenv:Body> 
</soapenv:Envelope>; 

后来,我将整个对象的字符串之前,我提交的SOAP请求..所以字符串转换后,我只是做了一个字符串替换。

var requestString = request.toString(); 
requestString = requestString.replace("<fruitList/>",myFruit);