2011-02-16 94 views
1

我有一个Senchatouch的问题,我不得不解码这个XML。 我无法找到获取Product-id属性,ProductMime URL和其他集合的解决方案。Sencha Touch XML

<ProductCollection> 
<Product id="5"> 
<vendorProductId>123</vendorProductId> 
<ean>0</ean> 
<stock>no</stock> 
<name>test</name><nameShort> 
</nameShort> 
<description>description</description> 
<descriptionShort>descriptionShort</descriptionShort> 
<deliveryScope></deliveryScope> 
<price>89</price> 
<priceTax>0</priceTax> 
<priceGross>89</priceGross> 
<productCurrency>0</productCurrency> 
<ProductMimeCollection> 
    <ProductMime url="1.JPG" mimeType=""/> 
    <ProductMime url="1.JPG" mimeType=""/> 
    <ProductMime url="1.JPG" mimeType=""/> 
    <ProductMime url="1.JPG" mimeType=""/> 
    <ProductMime url="1" mimeType=""/> 
</ProductMimeCollection> 
<ProductReviewCollection rating="5" reviews="1"> 
    <ProductReview id="1"> 
    <active>1</active> 
    <customerId>2</customerId> 
    <dateCreated/> 
    <productId>5</productId> 
    <review>Reviewtext</review> 
    <shopId/> 
    <userEmail></userEmail> 
    <userName></userName> 
    <userRating>5</userRating> 
    </ProductReview> 
</ProductReviewCollection> 
<CrossSellingCollection> 
    <Product id="13"></Product> 
</CrossSellingCollection> 
</Product> 

</ProductCollection> 

你能告诉我如何获取的属性和元素,... 这是我的路,没有工作:

Ext.regModel('Products', { 
    fields: ['vendorProductId', 'ean', 'stock', {name: 'ProductMime', convert: (function(){ 
      var reader2 = new Ext.data.XmlReader({ 
       record: '> url', 
       fields: [ 
        {name: 'url', mapping: '@url'} 
       ] 
      }); 
      return function(v, n) { 
       return reader2.readRecords(n).records; 
      }; 
     });} 
] 
}); 

var store = new Ext.data.Store({ 
    model: 'Products', 
    autoLoad:true, 
    proxy: { 
     type: 'ajax', 
     url : 'ajax/topten.xml', 
     reader: { 
    type : 'xml', 
    root : 'ProductCollection', 
    record: 'Product' 
    } 
    } 

请帮我

感谢您的帮助!

回答

4

我不知道你的意思是通过获取属性,所以我会告诉你如何将它们放入e中。 G。数据视图:

<!DOCTYPE html> 
<html> 
    <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <title>Stackoverflow Example</title> 
     <script src="../sencha-touch-debug.js" type="text/javascript"> 
     </script> 
     <link href="../resources/css/sencha-touch.css" rel="stylesheet" type="text/css"> 
     <script type="text/javascript"> 
      new Ext.Application({ 
       name: 'stackoverflow', 
       launch: function(){ 
        Ext.regModel('Products', { 
         fields: ['vendorProductId', 'ean', 'stock', { 
          name: 'ProductMime', 
          convert: (function(){ 
           var reader2 = new Ext.data.XmlReader({ 
            record: '> url', 
            fields: [ 
            { 
             name: 'url', 
             mapping: '@url' 
            }] 
           }); 
           return function(v, n) { 
            return reader2.readRecords(n).records; 
           }; 
          }) 
         }] 
        }); 

        this.stores.products = new Ext.data.Store({ 
         model: 'Products', 
         autoLoad:true, 
         proxy: { 
          type: 'ajax', 
          url : 'data.xml', 
          reader: { 
           type : 'xml', 
           root : 'ProductCollection', 
           record: 'Product' 
          } 
         } 
        }); 
       var productTpl = new Ext.XTemplate(
        '<tpl for=".">', 
         '<div class="product-wrap" id="{vendorProductId}">', 
         '<div class="product-ean">{ean}</div>', 
         '<div class="product-stock">{stock}</div>', 
        '</tpl>' 
       );  
       new Ext.Panel({ 
        fullscreen: true, 
        items: new Ext.DataView({ 
         store: this.stores.products, 
         tpl: productTpl, 
         itemSelector: 'product-selected' 
         //other config goes here 
        }) 
       }); 
      } 
     });   
     </script> 
    </head> 
    <body> 
    </body> 
</html> 

希望这可以帮助你:)