I have a problem with senchatouch and i have to decode this XML. i can't find a solution to get the Product-id attribute, ProductMime urls and the other collections.
<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>
can you show me how to fetch the attributes and elements,... this was my way which did not work:
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.r开发者_高级运维eadRecords(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'
}
}
Please help me
Thanks for your Help!!
I don't know what you mean by fetch the attributes, so instead I'll show you how to put them into e. g. 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>
Hope this can help you :)
精彩评论