RSSフィードを読むプログラムを作成しました。そのようなウェブサイト(ABCニュース、TechCrunch、Engadget)のようないくつかのために働いていない。これらのウェブサイトの長さは1ラフ以上です。私は解析のためにXPATHメソッドを使用します。おそらく、この問題は私がBadaに新しいことだ。 XMLの解析に使用しているコードはXML解析が失敗しました
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);
}
}
まだ問題がありますか? –
@Circadian:はい – ArulRaj