Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Vamos utilizar o FindCategoryList e filtrar apenas as categorias que possuam produtos, sem ofertas soltas.
Antes de iniciar o tutorial, faça o download dos arquivos do Wrapper .Net diretamente do nosso perfil no GitHub. Com os arquivos em mãos, adicione-os ao projeto no Visual Studio ou, se preferir, façam uma referência à .dll que também está disponível para download.
Primeiro vamos entender a ideia de ofertas soltas. Quando realizamos a requisição para o serviço FindCategoryList, podemos ter como retorno categorias somente com ofertas, sem o relacionamento com produtos, o que chamamos de ofertas soltas. No XML de retorno do serviço, temos o atributo hasOffer para cada categoria retornada. Esse atributo indica qual a categoria possui produtos (quando seu valor é ?false?) e qual possui somente ofertas soltas (quando seu valor é ?true?).
Com a classe Apiki_Buscapé_API instanciada, vamos recuperar uma lista de categorias com a palavra-chave ?puma?.
<br />System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();<br />xmldoc.LoadXml(result);<br />// Cria objeto com todos os nós subCategory<br />System.Xml.XmlNodeList categories = xmldoc.GetElementsByTagName("subCategory");<br />
Para poder tratar o XML de retorno, vamos transformar a string de retorno em um objeto do tipo XmlDocument como já vimos em tutoriais anteriores.
<br />System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();<br />xmldoc.LoadXml(result);<br />// Cria objeto com todos os nós subCategory<br />System.Xml.XmlNodeList categories = xmldoc.GetElementsByTagName("subCategory");<br />
No trecho de código acima, também já separamos todos os nós subCategory. Agora temos que percorrê-los, a fim de exibir somente as categorias sem ofertas soltas.
foreach (System.Xml.XmlNode cat in categories) { // Exibir somente as categorias sem ofertas soltas
if (cat.Attributes.GetNamedItem("hasOffer").InnerText == "false")
{
// Dados da categoria
string imageUrl = cat.ChildNodes.Item(0).Attributes.GetNamedItem("url").InnerText;
string catName = cat.ChildNodes.Item(2).InnerText;
string linkUrl = cat.ChildNodes.Item(1).ChildNodes.Item(0).Attributes.GetNamedItem("url").InnerText;
int catId = Convert.ToInt32(cat.Attributes.GetNamedItem("id").InnerText);
}
}
Verificamos em cada nó o valor do atributo hasOffer e exibimos somente os itens em que o atributo tem o valor false.
Já que vamos exibir essas informações no navegador, vamos aproveitar e buscar também a quantidade de produtos presente em cada categoria. Para isso, vamos utilizar o método FindProductList buscando pelo id da categoria e pegando o valor do atributo totalResultsAvailable que é retornado. A seguir, exibimos o nome da categoria e sua imagem com a quantidade de produtos encontrados.
// Quantidade de produtos na categoria Apiki_Buscape_API.FiltrosFindProducts filtrosProdutos = new Apiki_Buscape_API.FiltrosFindProducts();
filtrosProdutos.CategoryId = catId;
filtrosProdutos.Results = 1;
string products = apiBuscape.FindProductList(filtrosProdutos);
System.Xml.XmlDocument docProducts = new System.Xml.XmlDocument();
docProducts.LoadXml(products);
int productsCount = Convert.ToInt32(docProducts.ChildNodes.Item(1).Attributes.GetNamedItem("totalResultsAvailable").InnerText);
Response.Write( string.Format( "<p><a href=\"{0}\"><img src=\"{1}\" />{2} - {3} ({4})</a></p>", linkUrl, imageUrl, catId, catName, productsCount) );
/applications/core/interface/imageproxy/imageproxy.php?img=http://developer.buscape.com/wp-content/uploads/2012/05/products.jpg&key=42c81bfbf9a01889ad775dd884aabe70e11aa38132fd935a70108af0be2439d3" alt="products.jpg" />
Pronto! Temos a exibição somente das categorias que não possuem ofertas soltas e na frente colocamos a quantidade de produtos encontrados para a categoria. Continuem acompanhando nossos tutoriais toda semana e comentem em nosso fórum de discussões.
Carregando comentários...