Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSS iMasters

[Resolvido] Como obter uma lista de categorias sem ofertas soltas

Recommended Posts

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

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.

 

http://imasters.com.br/artigo/24636/apis-buscape/como-obter-uma-lista-de-categorias-sem-ofertas-soltas-com-o-wrappernet

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.