2014-06-22 87 views
0

我的數據最初被存儲在結構化的這樣的XML文件(在每個行的一堆實體,行中的每個實體和細胞的)使用XML創建dojo.store.memory?

<entity i=1> 
     <row i =1> 
      <cell i=1> 
      <cell i=2> 
     </row> 

     <row i=2> 
      <cell i=1> 
      <cell i=2> 
     </row> 
    </entity> 

實施例I從道場教程讀是這樣的:

require([ 

    'dojo/store/Memory', 
    'gridx/Grid', 
    'gridx/core/model/cache/Sync' 
    ], function(Store, Grid, Cache){ 
    var store = new Store({ 
    data: [ 
     {id: 1, title: 'Hey There', artist: 'Bette Midler'}, 
     {id: 2, title: 'Love or Confusion', artist: 'Jimi Hendrix'}, 
     {id: 3, title: 'Sugar Street', artist: 'Andy Narell'} 
    ] 
}); 
...... 
}); 

如何使用XML樣式表創建dojo存儲?我應該在我的XML樣式表中使用嵌入式JavaScript嗎?

回答

0

那麼,你可以使用dojo/query模塊遍歷你的XML文檔。你首先要做的唯一一件事情就是分析XML(如果沒有的話),例如:

require([ "dojo/query", "dojox/xml/parser", "dojo/dom-attr" ], function(query, xml, domAttr) { 
    var content = xml.parse("<entity><row i=\"1\"><cell i=\"1\">Cell 1</cell><cell i=\"2\">Cell 2</cell></row><row i=\"2\"><cell i=\"1\">Cell 3</cell><cell i=\"2\">Cell 4</cell></row></entity>"); 
    var out = query("row", content).map(function(node) { 
     var data = {}; 
     query("cell", node).forEach(function(cell) { 
      data[domAttr.get(cell, "i")] = cell.textContent; 
     }); 
     return data; 
    }); 
    console.log(out); 
}); 

這將導致兩個對象的數組,其中i屬性的值是屬性名稱和<cell>元素的文本內容是值。

[{ 
    "1": "Cell 1", 
    "2": "Cell 2" 
}, { 
    "1": "Cell 3", 
    "2": "Cell 4" 
}] 

然後,您可以在商店中使用。

完整的例子可以在JSFiddle上找到:http://jsfiddle.net/bUjN7/