2014-08-27 67 views
0

所以我從我的xml響應中提取變量並嘗試重新格式化對象,但我想盡可能以最有效的方式進行操作。所以我想將相同對象的xml數組加載到一個js數組中,我可以循環並輸出新格式。在提取XPath時,我找到了對type =「nodeset」的引用,但我無法在文檔中找到對它的引用。從xml響應提取對象數組js

什麼是完整的XML對象加載到一個js變量和循環直通對象和輸出的新格式

感謝您的幫助的最佳方式,你可以給我這個。

回答

0

完成此操作的最佳方法是使用XMLToJSON策略,您可以在其中調解有效內容的JavaScript標註,然後在需要時使用JSONToXML進行轉換。

+0

我找到了response.content.asXML;我可以使用js來加載結構並訪問裏面的對象。仍然需要弄清楚如何在同一個標​​記的所有對象上執行循環。 – aguilarsoto 2014-08-28 03:38:41

+0

爲此,如果數據一致,可以實際使用xpath。否則,將其解析爲JavaScript對象仍然是最簡單的(也可能接近高性能)路線。 – brandonscript 2014-08-28 07:09:21

0

對於不需要過濾的XML數組,您可以使用XPATH與type="nodeset",就像您所描述的那樣。這使您可以在特定的XPATH中抽取節點和所有子節點。正如我相信你注意到的那樣,你只能通過提取type="string"來做到這一點。只要知道你需要將提取的變量轉換爲字符串,然後才能像使用其他字符串一樣使用XML節點。然後,您可以執行JSON.parse來接收字符串並像數組一樣操作對象。字符串轉換是調用與下面的代碼JS標註(如果別人有更好的辦法,我所有的耳朵)一樣簡單:

var extractedNodeSet = context.getVariable("extractedNodeSet"); 
var extractedNodeSetString = String(extractedNodeSet); 

對於XML陣列需要過濾/操縱,我建議將XSLT與可信的<xsl:for-each select=...>元素一起使用。這將允許您在XML數組節點上設置條件,操作標記/數據並提取數據,所有操作都是一步到位的。唯一值得關注的是,這不是一個JS數組,所以如果你絕對必須有一個JS數組,那麼你需要做一個XMLtoJSON並處理來自那裏的數據。

+0

感謝JS的字符串轉換引用。這真的很有幫助 – aguilarsoto 2014-08-31 20:14:33

+0

沒問題 - 很樂意幫忙。 – akoo1010 2014-08-31 21:54:43

+0

週期I最後使用計數器和一段時間 var i = 0; while(folder = folders.folder [i]){ i ++; r.folders.push(reformatFolder(folder)); } – aguilarsoto 2014-09-02 17:43:15