2014-01-07 61 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);