[Xerces] Erreur de compilation avec SAX
Bonjour à tous,
Je suis en train de développer un parser XML pour mon application en SAX avec Xerces 3.1 sur Ubuntu. Et je n'arrive pas à parser les attributs de mes tags.
En effet, quand je compile, le compilateur me dit que j'utilise mal l'API. Mais le code qui parcourt la liste d'attribut de chaque tag vient de la doc API !
Voici l'erreur du compilateur :
Code:
1 2
| src/MySAXHandler.cpp:16:39: erreur: invalid use of incomplete type struct xercesc_3_1::AttributeList
/usr/include/xercesc/sax/DocumentHandler.hpp:29:7: erreur: forward declaration of struct xercesc_3_1::AttributeList |
et voici le header du handler :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #ifndef MYSAXHANDLER_HPP_
#define MYSAXHANDLER_HPP_
#include <xercesc/sax/HandlerBase.hpp>
using namespace xercesc;
class MySAXHandler : public HandlerBase {
public:
MySAXHandler();
void startElement(const XMLCh* const, AttributeList&);
void fatalError(const SAXParseException&);
};
#endif /* MYSAXHANDLER_HPP_ */ |
et le code du Handler :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include "MySAXHandler.hpp"
#include <iostream>
using namespace std;
MySAXHandler::MySAXHandler()
{
}
void MySAXHandler::startElement(const XMLCh* const name,
AttributeList& attributes)
{
char* message = XMLString::transcode(name);
cout << "I saw element: "<< message << endl;
XMLString::release(&message);
XMLSize_t attributeCount = attributes.getLength();
char* type = NULL;
for (XMLSize_t i = 0; i < attributeCount; i++){
type = XMLString::transcode(attributes.getName(i));
cout << "Type: "<< type << endl;
}
}
void MySAXHandler::fatalError(const SAXParseException& exception)
{
char* message = XMLString::transcode(exception.getMessage());
cout << "Fatal Error: " << message
<< " at line: " << exception.getLineNumber()
<< endl;
XMLString::release(&message);
} |
Je ne vois pas comment je peux m'en sortir.