Opération de chargement d'un document XML. More...
#include "xmlio.h"
Classes | |
class | ContentHandler |
Gestionnaire de callbacks lors de la lecture d'un document XML. More... | |
class | IStreamXml |
Flux de lecture d'un fichier au format XML. More... | |
Public Member Functions | |
XmlInput () | |
Constructeur. More... | |
~XmlInput () | |
Destructeur. More... | |
IStream const * | currentStream () const |
Flux d'entrée actuel. More... | |
void | reset () |
Remise à zéro de la configuration de l'opération. More... | |
XmlInput & | setIStream (std::istream *istream, std::string const &streamname) |
Choix du flux de lecture. More... | |
XmlInput & | setXmlDocument (XmlDocument *xmldocument) |
Choix du document à écrire. More... | |
XmlInput & | setStreaming (bool st) |
Choix de la lecture sur un flux continu. More... | |
XmlInput & | setContentHandler (ContentHandler *contenthandler) |
Choix de l'opération gérant tous les callbacks. More... | |
XmlInput & | setMemoDocument (bool memo) |
Mémorisation de la totalité du document. More... | |
XmlInput & | setIgnoreComments (bool ic) |
Ignorer les commentaires. More... | |
XmlInput & | setAutoAddEntities (bool aae) |
Ajoute automatiquement les définitions d'entités au flux de lecture. More... | |
XmlInput & | setAutoNamespaces (bool an) |
Gère automatiquement les espaces de noms en développant les noms d'éléments et d'attributs. More... | |
XmlInput & | setXHtmlMode () |
Passage en mode XHTML. More... | |
void | changeContentHandler (ContentHandler *contenthandler) |
Changement de l'opération gérant les callbacks. More... | |
ContentHandler * | contentHandler () |
Accès à l'opération gérant les callbacks . More... | |
IStreamXml const & | streamXml () const |
Accès au flux. More... | |
void | run () |
Exécution de l'opération. More... | |
void | runFile (XmlDocument &doc, std::string const &filename) |
Raccourci pour la lecture d'un document dans un fichier. More... | |
Protected Member Functions | |
void | readDoctypeDeclaration (std::string const &name, XmlDocument::Element *parent) |
Lecture d'une déclaration commançant par '!' . More... | |
void | readCData (XmlDocument::Element *parent) |
Lecture d'une section CDATA. More... | |
void | readComment (XmlDocument::Element *parent) |
Lecture d'un commentaire. More... | |
void | readXmlDeclaration () |
Lecture d'une déclaration xml '?' . More... | |
XmlDocument::Element * | readElement (std::string const &name, XmlDocument::Element *parent) |
Lecture d'un élément. More... | |
void | readText (IStream::Lexeme &l, XmlDocument::Element *parent) |
Lecture de texte brut. More... | |
IStream::Lexeme | readAttributes (XmlDocument::Element *node) |
Lecture des attributs à l'intérieur d'une balise. More... | |
void | eraseBlankChars (XmlDocument::Text *text) |
Supprime les caractères à ignorer (espaces) en début et fin du nom du noeud texte. More... | |
void | namespaceAdd (XmlDocument::Element *node, std::string const &id, std::string const &def) |
Ajoute une déclaration d'espace de nom Xml. More... | |
void | namespaceUpdateUnstack () |
Met à jour les espaces de noms quand un élément est dépilé. More... | |
bool | namespaceApply (std::string &s) const |
Applique (développe) les espaces de noms sur la chaîne passée (nom d'élément ou d'attribut). More... | |
void | namespaceApply (XmlDocument::Element *node) |
Applique (développe) les espaces de noms sur l'élément passé. More... | |
bool | useNewContentHandler () |
Applique le nouveau ContentHandler s'il y en a un en attente. More... | |
Protected Attributes | |
IStreamXml | m_istream |
Flux de lecture. More... | |
XmlDocument * | m_document |
Document dans lequel le contenu du flux sera stocké. More... | |
bool | m_streaming |
Lecture sur un flux continu (false par défaut). More... | |
ContentHandler * | m_contenthandler |
Gestionnaire de callbacks. More... | |
ContentHandler * | m_newcontenthandler |
Nouveau gestionnaire de callbacks à prendre en compte dès que possible. More... | |
bool | m_memodocument |
Mémorisation de la totalité du document. More... | |
bool | m_ignorecomments |
Ignorer les commentaires. More... | |
bool | m_autoaddentities |
Ajoute automatiquement les définitions d'entités au flux de lecteure. More... | |
bool | m_autonamespaces |
Développe automatiquement les espaces de noms. More... | |
std::map< std::string, std::string > | m_xmlns |
Espaces de noms xml actifs. More... | |
std::vector< std::map< std::string, std::string > > | m_stackxmlns |
Pile des définitions des espaces de noms. More... | |
Opération de chargement d'un document XML.
cogitant::XmlInput::XmlInput | ( | ) |
Constructeur.
cogitant::XmlInput::~XmlInput | ( | ) |
Destructeur.
void cogitant::XmlInput::changeContentHandler | ( | ContentHandler * | contenthandler | ) |
Changement de l'opération gérant les callbacks.
Cette méthode peut être appelée alors qu'une lecture est en cours. Après la lecture d'une déclaration DOCTYPE, la nouvelle opération gérant les callbacks est prise en compte (et uniquement à ce moment là, car ce changement est utilise pour changer le gestionnaire juste après la détection du format).
ContentHandler* cogitant::XmlInput::contentHandler | ( | ) |
Accès à l'opération gérant les callbacks .
IStream const* cogitant::XmlInput::currentStream | ( | ) | const |
Flux d'entrée actuel.
|
protected |
Supprime les caractères à ignorer (espaces) en début et fin du nom du noeud texte.
|
protected |
Ajoute une déclaration d'espace de nom Xml.
node | Noeud portant la déclaration. |
id | Identificateur de l'espace de nom. |
def | Définition de l'espace de nom. |
|
protected |
Applique (développe) les espaces de noms sur la chaîne passée (nom d'élément ou d'attribut).
Retourne true ssi un développement a été appliqué.
|
protected |
Applique (développe) les espaces de noms sur l'élément passé.
|
protected |
Met à jour les espaces de noms quand un élément est dépilé.
|
protected |
Lecture des attributs à l'intérieur d'une balise.
Cette méthode lit aussi les déclarations d'espaces de noms XML. Ces déclarations ne sont pas stockées dans la liste des attributs de l'élément.
node | Les attributs lus sont stockés comme propriétés de ce noeud. |
?
ou /
(suivis de >
) ou >
).
|
protected |
Lecture d'une section CDATA.
parent | parent du noeud qui doit être créé. |
|
protected |
Lecture d'un commentaire.
parent | parent du noeud qui doit être créé. |
|
protected |
Lecture d'une déclaration commançant par '!'
.
name | nom de la déclaration (qui a déjà été lu). |
parent | parent du noeud qui doit être créé. |
|
protected |
Lecture d'un élément.
name | nom du tag (qui a déjà été lu). |
parent | parent du noeud qui doit être créé. |
|
protected |
Lecture de texte brut.
l | (E/S) lexeme (qui a déjà été lu) qui repère le début du texte. |
parent | parent du noeud "texte" qui doit être créé. |
|
protected |
Lecture d'une déclaration xml '?'
.
void cogitant::XmlInput::reset | ( | ) |
Remise à zéro de la configuration de l'opération.
Par défaut, le document est mémorisé.
void cogitant::XmlInput::run | ( | ) |
Exécution de l'opération.
void cogitant::XmlInput::runFile | ( | XmlDocument & | doc, |
std::string const & | filename | ||
) |
Raccourci pour la lecture d'un document dans un fichier.
XmlInput& cogitant::XmlInput::setAutoAddEntities | ( | bool | aae | ) |
Ajoute automatiquement les définitions d'entités au flux de lecture.
C'est le comportement par défaut.
XmlInput& cogitant::XmlInput::setAutoNamespaces | ( | bool | an | ) |
Gère automatiquement les espaces de noms en développant les noms d'éléments et d'attributs.
C'est le comportement par défaut (qui ralentit un peu l'analyse d'un fichier).
XmlInput& cogitant::XmlInput::setContentHandler | ( | ContentHandler * | contenthandler | ) |
Choix de l'opération gérant tous les callbacks.
XmlInput& cogitant::XmlInput::setIgnoreComments | ( | bool | ic | ) |
Ignorer les commentaires.
XmlInput& cogitant::XmlInput::setIStream | ( | std::istream * | istream, |
std::string const & | streamname | ||
) |
Choix du flux de lecture.
XmlInput& cogitant::XmlInput::setMemoDocument | ( | bool | memo | ) |
Mémorisation de la totalité du document.
memo | Si true la totalité des noeuds du document est mémorisée, sinon, seuls les noeud qui vont du noeud courant à la racine sont mémorisés, ce qui est normalement suffisant dans le cas où un ContentHandler est utilisé. |
XmlInput& cogitant::XmlInput::setStreaming | ( | bool | st | ) |
Choix de la lecture sur un flux continu.
XmlInput& cogitant::XmlInput::setXHtmlMode | ( | ) |
Passage en mode XHTML.
XmlInput& cogitant::XmlInput::setXmlDocument | ( | XmlDocument * | xmldocument | ) |
Choix du document à écrire.
IStreamXml const& cogitant::XmlInput::streamXml | ( | ) | const |
Accès au flux.
|
protected |
Applique le nouveau ContentHandler s'il y en a un en attente.
|
protected |
Ajoute automatiquement les définitions d'entités au flux de lecteure.
Par défaut, vrai.
|
protected |
Développe automatiquement les espaces de noms.
Par défaut, vrai.
|
protected |
Gestionnaire de callbacks.
|
protected |
Document dans lequel le contenu du flux sera stocké.
|
protected |
Ignorer les commentaires.
Par défaut, vrai.
|
protected |
Flux de lecture.
|
protected |
Mémorisation de la totalité du document.
Si true
la totalité des noeuds du document est mémorisée, sinon, seuls les noeuds qui vont du noeud courant à la racine sont mémorisés, ce qui est normalement suffisant dans le cas où un ContentHandler est utilisé.
|
protected |
Nouveau gestionnaire de callbacks à prendre en compte dès que possible.
|
protected |
Pile des définitions des espaces de noms.
La pile correspond à la pile des éléments lus, et chaque élément de la pile contient l'ensemble des espaces de noms déclarés dans l'élément correspondant.
|
protected |
Lecture sur un flux continu (false
par défaut).
Si cet attribut est défini à true
, l'analyse du flux s'interromp dès que la balise de fermeture du plus haut niveau est rencontrée. Ceci permet d'analyser un flux dans lequel sont reçus plusieurs documents XML les uns à la suite des autres. Par contre, lors de la lecture d'un fichier, ce paramètre doit être à false
.
|
protected |
Espaces de noms xml actifs.