linkparser.h
#ifndef __LINKPARSER_H
#define __LINKPARSER_H
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#include <wx/html/htmlpars.h>
enum htmlParserOption{
ParseOnlyImages,
ParseOnlyPages,
ParseBoth
};
class LinkParser : public wxHtmlParser
{
wxArrayString stringArray;
wxString m_src;
public:
LinkParser(const wxString& src, htmlParserOption option = ParseBoth);
wxArrayString GetLinks();
wxArrayString GetLinks(wxString hostUrl);
void AddString(wxString txt);
wxObject* GetProduct(){return NULL;}
void AddText(const wxChar* txt);
};
class LinkTagHandler : public wxHtmlTagHandler
{ LinkParser* m_Parser;
public:
LinkTagHandler();
LinkTagHandler(LinkParser* p);
wxString GetSupportedTags();
bool HandleTag(const wxHtmlTag& tag);
};
class ImageTagHandler : public wxHtmlTagHandler
{ LinkParser* m_Parser;
public:
ImageTagHandler();
ImageTagHandler(LinkParser* p);
wxString GetSupportedTags();
bool HandleTag(const wxHtmlTag& tag);
};
#endif
linkparser.cpp#define __LINKPARSER_H
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#include <wx/html/htmlpars.h>
enum htmlParserOption{
ParseOnlyImages,
ParseOnlyPages,
ParseBoth
};
class LinkParser : public wxHtmlParser
{
wxArrayString stringArray;
wxString m_src;
public:
LinkParser(const wxString& src, htmlParserOption option = ParseBoth);
wxArrayString GetLinks();
wxArrayString GetLinks(wxString hostUrl);
void AddString(wxString txt);
wxObject* GetProduct(){return NULL;}
void AddText(const wxChar* txt);
};
class LinkTagHandler : public wxHtmlTagHandler
{ LinkParser* m_Parser;
public:
LinkTagHandler();
LinkTagHandler(LinkParser* p);
wxString GetSupportedTags();
bool HandleTag(const wxHtmlTag& tag);
};
class ImageTagHandler : public wxHtmlTagHandler
{ LinkParser* m_Parser;
public:
ImageTagHandler();
ImageTagHandler(LinkParser* p);
wxString GetSupportedTags();
bool HandleTag(const wxHtmlTag& tag);
};
#endif
#include "LinkParser.h"
#include "borfunctions.h"
LinkTagHandler::LinkTagHandler()
{
m_Parser = NULL;
}
LinkTagHandler::LinkTagHandler(LinkParser *p)
{
m_Parser = p;
}
wxString LinkTagHandler::GetSupportedTags()
{
return "A";
}
bool LinkTagHandler::HandleTag(const wxHtmlTag& tag)
{
if (tag.HasParam( wxT("HREF") ))
{
wxString href(tag.GetParam( wxT("HREF") ));
m_Parser->AddString(href);
ParseInner(tag);
return true;
}
else
return false;
}
///////////////////////////////////////
ImageTagHandler::ImageTagHandler()
{
m_Parser = NULL;
}
ImageTagHandler::ImageTagHandler(LinkParser *p)
{
m_Parser = p;
}
wxString ImageTagHandler::GetSupportedTags()
{
return "IMG";
}
bool ImageTagHandler::HandleTag(const wxHtmlTag& tag)
{
if (tag.HasParam( wxT("SRC") ))
{
wxString href(tag.GetParam( wxT("SRC") ));
m_Parser->AddString(href);
ParseInner(tag);
return true;
}
else
return false;
}
///////////////////////////////////////////////////////////////////////////////
LinkParser::LinkParser(const wxString& url, htmlParserOption option)
:m_src(url)
{
bool ImgOk = true;
bool PageOk = true ;
if (option == ParseBoth)
{
ImgOk = true;
PageOk = true ;
}
if (option == ParseOnlyImages)
{
ImgOk = true;
PageOk = false ;
}
if (option == ParseOnlyPages)
{
ImgOk = false;
PageOk = true ;
}
if (PageOk == true)
AddTagHandler( new LinkTagHandler(this) );
if (ImgOk == true)
AddTagHandler( new ImageTagHandler(this) );
}
void LinkParser::AddString(wxString txt)
{
stringArray.Add(txt);
}
void LinkParser::AddText(const wxChar* txt)
{
}
wxArrayString LinkParser::GetLinks(wxString hostUrl)
{
Parse(m_src);
wxString newItem,hostStr;
//hostStr = ;
wxArrayString resultArrayString;
for (int i =0 ; i < stringArray.GetCount(); i++)
{
newItem = stringArray.Item(i);
resultArrayString.Add(newItem);
}
return resultArrayString;
}
wxArrayString LinkParser::GetLinks(void)
{
Parse(m_src);
return stringArray;
}
#include "borfunctions.h"
LinkTagHandler::LinkTagHandler()
{
m_Parser = NULL;
}
LinkTagHandler::LinkTagHandler(LinkParser *p)
{
m_Parser = p;
}
wxString LinkTagHandler::GetSupportedTags()
{
return "A";
}
bool LinkTagHandler::HandleTag(const wxHtmlTag& tag)
{
if (tag.HasParam( wxT("HREF") ))
{
wxString href(tag.GetParam( wxT("HREF") ));
m_Parser->AddString(href);
ParseInner(tag);
return true;
}
else
return false;
}
///////////////////////////////////////
ImageTagHandler::ImageTagHandler()
{
m_Parser = NULL;
}
ImageTagHandler::ImageTagHandler(LinkParser *p)
{
m_Parser = p;
}
wxString ImageTagHandler::GetSupportedTags()
{
return "IMG";
}
bool ImageTagHandler::HandleTag(const wxHtmlTag& tag)
{
if (tag.HasParam( wxT("SRC") ))
{
wxString href(tag.GetParam( wxT("SRC") ));
m_Parser->AddString(href);
ParseInner(tag);
return true;
}
else
return false;
}
///////////////////////////////////////////////////////////////////////////////
LinkParser::LinkParser(const wxString& url, htmlParserOption option)
:m_src(url)
{
bool ImgOk = true;
bool PageOk = true ;
if (option == ParseBoth)
{
ImgOk = true;
PageOk = true ;
}
if (option == ParseOnlyImages)
{
ImgOk = true;
PageOk = false ;
}
if (option == ParseOnlyPages)
{
ImgOk = false;
PageOk = true ;
}
if (PageOk == true)
AddTagHandler( new LinkTagHandler(this) );
if (ImgOk == true)
AddTagHandler( new ImageTagHandler(this) );
}
void LinkParser::AddString(wxString txt)
{
stringArray.Add(txt);
}
void LinkParser::AddText(const wxChar* txt)
{
}
wxArrayString LinkParser::GetLinks(wxString hostUrl)
{
Parse(m_src);
wxString newItem,hostStr;
//hostStr = ;
wxArrayString resultArrayString;
for (int i =0 ; i < stringArray.GetCount(); i++)
{
newItem = stringArray.Item(i);
resultArrayString.Add(newItem);
}
return resultArrayString;
}
wxArrayString LinkParser::GetLinks(void)
{
Parse(m_src);
return stringArray;
}
No comments are included for this article. Submit a comment with your feedback/suggestions.
Click to View Printer Friendly Version