J'ai fait un programme qui lit les flux de nouvelles rss. Ce ne fonctionne pas pour certains des sites Web comme (ABC News, TechCrunch, Engadget). Ces sites ayant leur longueur de corps plus d'un lakh. J'utilise la méthode XPATH pour l'analyse. Peut-être ce problème en raison de je suis nouveau à Bada. Le code que j'utilise pour l'analyse XML estL'analyse XML échoue dans bada
void
addfeed::OnTransactionReadyToRead(HttpSession& httpSession, HttpTransaction& httpTransaction, int availableBodyLen)
{
pFrame = Osp::App::Application::GetInstance()->GetAppFrame()->GetFrame();
FormMgr* pFormMgr = dynamic_cast<FormMgr*> (pFrame->GetControl("FormMgr"));
bool flag1=0;
AppLog("####### OnTransactionReadyToRead! #######");
HttpResponse* pHttpResponse = httpTransaction.GetResponse();
if (pHttpResponse->GetStatusCode() == NET_HTTP_STATUS_OK)
{
AppLog("%d",availableBodyLen);
HttpHeader* pHttpHeader = pHttpResponse->GetHeader();
String* tempHeaderString = pHttpHeader->GetRawHeaderN();
ByteBuffer* pBuffer = pHttpResponse->ReadBodyN();
String str((const char*)pBuffer->GetPointer());
AppLog("Response: %s",str.GetPointer());
int limit(pBuffer->GetLimit());
AppLog("Limit: %d",limit);
xmlDoc * doc = NULL;
xmlXPathContextPtr xpathCtx;
xmlXPathObjectPtr xpathtitle;
xmlXPathObjectPtr descriptionObj;
xmlXPathObjectPtr linkObj;
xmlXPathObjectPtr pubdateObj;
doc = xmlParseMemory((const char*)pBuffer->GetPointer(),pBuffer->GetLimit());// Here itself my code fails
if(doc==NULL)
{
flag1=1;
AppLog("Failed to load xml doc!");
xmlFreeDoc(doc);
xmlCleanupParser();
}
else
{
AppLog("InTo XML Parsing");
/* Create xpath evaluation context */
xpathCtx = xmlXPathNewContext(doc);
if(xpathCtx == NULL)
{
AppLog("Error: unable to create new XPath context");
xmlFreeDoc(doc);
}
/* Evaluate xpath expression */
xpathtitle = xmlXPathEvalExpression((xmlChar*)"//item/title", xpathCtx);
if(xpathtitle == NULL)
{
AppLog("Error: unable to evaluate xpath expression");
xmlXPathFreeContext(xpathCtx);
xmlFreeDoc(doc);
}
descriptionObj = xmlXPathEvalExpression((xmlChar*)"//item/description",xpathCtx);
if(descriptionObj == NULL)
{
AppLog("Error: unable to evaluate xpath expression");
xmlXPathFreeContext(xpathCtx);
xmlFreeDoc(doc);
}
linkObj = xmlXPathEvalExpression((xmlChar*)"//item/link",xpathCtx);
if(linkObj==NULL)
{
AppLog("Error: unable to evaluate xpath expression");
xmlXPathFreeContext(xpathCtx);
xmlFreeDoc(doc);
}
pubdateObj=xmlXPathEvalExpression((xmlChar*)"//item/pubDate",xpathCtx);
if(pubdateObj==NULL)
{
AppLog("Error: unable to evaluate xpath expression");
xmlXPathFreeContext(xpathCtx);
xmlFreeDoc(doc);
}
get_xpath_titles1(xpathtitle->nodesetval);
get_xpath_description1(descriptionObj->nodesetval);
get_xpath_link1(linkObj->nodesetval);
get_xpath_pubdate1(pubdateObj->nodesetval);
xmlFreeDoc(doc);
xmlCleanupParser();
delete tempHeaderString;
delete pBuffer;
}
}
else
{
flag1=1;
}
if(flag1==1)
{
pFormMgr->SendUserEvent(FormMgr::REQUEST_ID_ADD_FEED_FORM,null);
}
}
encore des problèmes? –
@Circadian: oui – ArulRaj