Sencha Touch XML - PullRequest
       1

Sencha Touch XML

1 голос
/ 16 февраля 2011

У меня проблема с senchatouch, и мне нужно декодировать этот XML.Я не могу найти решение, чтобы получить атрибут Product-id, URL-адреса ProductMime и другие коллекции.

 <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'
    }
    }

Пожалуйста, помогите мне

Спасибо за вашу помощь !!

1 Ответ

4 голосов
/ 07 апреля 2011

Я не знаю, что вы подразумеваете под получением атрибутов, поэтому вместо этого я покажу вам, как поместить их в e. г. DataView:

<!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>

Надеюсь, это поможет вам:)

...