2013-10-06 99 views
0

我有一個dojox.data.XmlStore我想用XPath查詢xml存儲。有沒有辦法做到這一點? 下面的示例代表對屬性的查詢,但我想使用item元素提供的XPath查詢。DOJO - 使用XPath查詢XmlStore

var store = new dojox.data.XmlStore({url: "books.xml", rootItem: "book"}); 
var gotBooks = function(items, request){ 
    for(var i = 0; i < items.length; i++){ 
    var item = items[i]; 
    console.log("Located book: " + store.getValue(item, "title"); 
    } 
} 
var request = store.fetch({query: {isbn:"A9B57*"}, onComplete: gotBooks}); 

例如,如果我有一個道場dijit.Tree元素,它支持的onClick事件,我希望能夠獲取所選元素的內容。 item元素有一個名爲「query」的字段,它表示項目本身的XPath查詢。 如何使用此XPath查詢來從商店中獲取數據?

var tree = new Tree({ 
    model: myModel, 
    onClick: function(item){ 
     //the item parameter has a field called "query" that represent the XPath query for the item itself. 
    } 
}); 

如果我使用的是從XmlItem沒有結果「查詢」字段中提供。 var request = store.fetch({query: item.q , onComplete: gotBooks});

回答

0

嘗試使用正則表達式,而不是 「*」 在您的查詢,如:

var request = store.fetch({query: {isbn:new RegExp('A9B57','i')}, onComplete: gotBooks}); 

如果你需要查詢所有,只需使用:

var request = store.fetch({query: {}, onComplete: gotBooks}); 
0

XmlStore我們可以提取數據使用查詢XmlItem提供,如下例所示。

答案是道場源發現的dijit /樹/ ForestStoreModel#的getChildren()

store.fetch({ 
      //for the query element the item.query field can be used in this way 
      query: item.query, 
      onComplete: onComplete, 
      onError: onError 
});