【问题标题】:DOJO - Query XmlStore using XPathDOJO - 使用 XPath 查询 XmlStore
【发布时间】:2013-10-06 13:38:41
【问题描述】:

我有一个 dojox.data.XmlStore,我想使用 XPath 查询 xml 存储。有没有办法这样做? 下面的例子代表一个属性的查询,但我想使用 item 元素提供的 XPath 查询。

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});

例如,如果我有一个 dojo dijit.Tree 元素,它支持 onClick 事件,我希望能够获取所选元素的内容。 item 元素有一个名为“query”的字段,它表示对 item 本身的 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});

【问题讨论】:

    标签: javascript xml xpath dojo


    【解决方案1】:

    尝试在查询中使用 regExp 而不是“*”,例如:

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

    如果您需要查询全部,只需使用:

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

    【讨论】:

      【解决方案2】:

      要从 XmlStore 中提取数据,我们可以使用 XmlItem 提供的归档 query,如下例所示。

      dijit/tree/ForestStoreModel#getChildren()Dojo 来源中找到答案

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-02
        • 2016-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-18
        相关资源
        最近更新 更多