Quick links: Tutorial - Examples - Files - Symbols.
Classes: Hierarchy - Index - List - Members.
Namespaces: Index - base - cs - display.

Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
cogitant::XmlInput Class Reference

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...
 
XmlInputsetIStream (std::istream *istream, std::string const &streamname)
 Choix du flux de lecture. More...
 
XmlInputsetXmlDocument (XmlDocument *xmldocument)
 Choix du document à écrire. More...
 
XmlInputsetStreaming (bool st)
 Choix de la lecture sur un flux continu. More...
 
XmlInputsetContentHandler (ContentHandler *contenthandler)
 Choix de l'opération gérant tous les callbacks. More...
 
XmlInputsetMemoDocument (bool memo)
 Mémorisation de la totalité du document. More...
 
XmlInputsetIgnoreComments (bool ic)
 Ignorer les commentaires. More...
 
XmlInputsetAutoAddEntities (bool aae)
 Ajoute automatiquement les définitions d'entités au flux de lecture. More...
 
XmlInputsetAutoNamespaces (bool an)
 Gère automatiquement les espaces de noms en développant les noms d'éléments et d'attributs. More...
 
XmlInputsetXHtmlMode ()
 Passage en mode XHTML. More...
 
void changeContentHandler (ContentHandler *contenthandler)
 Changement de l'opération gérant les callbacks. More...
 
ContentHandlercontentHandler ()
 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::ElementreadElement (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...
 
XmlDocumentm_document
 Document dans lequel le contenu du flux sera stocké. More...
 
bool m_streaming
 Lecture sur un flux continu (false par défaut). More...
 
ContentHandlerm_contenthandler
 Gestionnaire de callbacks. More...
 
ContentHandlerm_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...
 

Detailed Description

Opération de chargement d'un document XML.

Constructor & Destructor Documentation

◆ XmlInput()

cogitant::XmlInput::XmlInput ( )

Constructeur.

◆ ~XmlInput()

cogitant::XmlInput::~XmlInput ( )

Destructeur.

Member Function Documentation

◆ changeContentHandler()

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()

ContentHandler* cogitant::XmlInput::contentHandler ( )

Accès à l'opération gérant les callbacks .

◆ currentStream()

IStream const* cogitant::XmlInput::currentStream ( ) const

Flux d'entrée actuel.

◆ eraseBlankChars()

void cogitant::XmlInput::eraseBlankChars ( XmlDocument::Text text)
protected

Supprime les caractères à ignorer (espaces) en début et fin du nom du noeud texte.

◆ namespaceAdd()

void cogitant::XmlInput::namespaceAdd ( XmlDocument::Element node,
std::string const &  id,
std::string const &  def 
)
protected

Ajoute une déclaration d'espace de nom Xml.

Parameters
nodeNoeud portant la déclaration.
idIdentificateur de l'espace de nom.
defDéfinition de l'espace de nom.

◆ namespaceApply() [1/2]

bool cogitant::XmlInput::namespaceApply ( std::string &  s) const
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é.

◆ namespaceApply() [2/2]

void cogitant::XmlInput::namespaceApply ( XmlDocument::Element node)
protected

Applique (développe) les espaces de noms sur l'élément passé.

◆ namespaceUpdateUnstack()

void cogitant::XmlInput::namespaceUpdateUnstack ( )
protected

Met à jour les espaces de noms quand un élément est dépilé.

◆ readAttributes()

IStream::Lexeme cogitant::XmlInput::readAttributes ( XmlDocument::Element node)
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.

Parameters
nodeLes attributs lus sont stockés comme propriétés de ce noeud.
Returns
le lexème lu qui marque la fin des attributs (c'est à dire un lexème de fermeture de balise : ? ou / (suivis de >) ou >).

◆ readCData()

void cogitant::XmlInput::readCData ( XmlDocument::Element parent)
protected

Lecture d'une section CDATA.

Parameters
parentparent du noeud qui doit être créé.

◆ readComment()

void cogitant::XmlInput::readComment ( XmlDocument::Element parent)
protected

Lecture d'un commentaire.

Parameters
parentparent du noeud qui doit être créé.

◆ readDoctypeDeclaration()

void cogitant::XmlInput::readDoctypeDeclaration ( std::string const &  name,
XmlDocument::Element parent 
)
protected

Lecture d'une déclaration commançant par '!'.

Parameters
namenom de la déclaration (qui a déjà été lu).
parentparent du noeud qui doit être créé.

◆ readElement()

XmlDocument::Element* cogitant::XmlInput::readElement ( std::string const &  name,
XmlDocument::Element parent 
)
protected

Lecture d'un élément.

Parameters
namenom du tag (qui a déjà été lu).
parentparent du noeud qui doit être créé.
Returns
noeud créé si l'élément reste ouvert et que la suite du fichier est "emboîtée" dans ce tag (ou NULL sinon).

◆ readText()

void cogitant::XmlInput::readText ( IStream::Lexeme l,
XmlDocument::Element parent 
)
protected

Lecture de texte brut.

Parameters
l(E/S) lexeme (qui a déjà été lu) qui repère le début du texte.
parentparent du noeud "texte" qui doit être créé.

◆ readXmlDeclaration()

void cogitant::XmlInput::readXmlDeclaration ( )
protected

Lecture d'une déclaration xml '?'.

◆ reset()

void cogitant::XmlInput::reset ( )

Remise à zéro de la configuration de l'opération.

Par défaut, le document est mémorisé.

◆ run()

void cogitant::XmlInput::run ( )

Exécution de l'opération.

◆ runFile()

void cogitant::XmlInput::runFile ( XmlDocument doc,
std::string const &  filename 
)

Raccourci pour la lecture d'un document dans un fichier.

◆ setAutoAddEntities()

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.

◆ setAutoNamespaces()

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).

◆ setContentHandler()

XmlInput& cogitant::XmlInput::setContentHandler ( ContentHandler contenthandler)

Choix de l'opération gérant tous les callbacks.

Warning
Cette méthode ne doit pas être appelée alors qu'une lecture est en cours.

◆ setIgnoreComments()

XmlInput& cogitant::XmlInput::setIgnoreComments ( bool  ic)

Ignorer les commentaires.

◆ setIStream()

XmlInput& cogitant::XmlInput::setIStream ( std::istream *  istream,
std::string const &  streamname 
)

Choix du flux de lecture.

◆ setMemoDocument()

XmlInput& cogitant::XmlInput::setMemoDocument ( bool  memo)

Mémorisation de la totalité du document.

Parameters
memoSi 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é.

◆ setStreaming()

XmlInput& cogitant::XmlInput::setStreaming ( bool  st)

Choix de la lecture sur un flux continu.

◆ setXHtmlMode()

XmlInput& cogitant::XmlInput::setXHtmlMode ( )

Passage en mode XHTML.

◆ setXmlDocument()

XmlInput& cogitant::XmlInput::setXmlDocument ( XmlDocument xmldocument)

Choix du document à écrire.

◆ streamXml()

IStreamXml const& cogitant::XmlInput::streamXml ( ) const

Accès au flux.

◆ useNewContentHandler()

bool cogitant::XmlInput::useNewContentHandler ( )
protected

Applique le nouveau ContentHandler s'il y en a un en attente.

Returns
true ssi un nouveau ContentHandler est utilisé.

Member Data Documentation

◆ m_autoaddentities

bool cogitant::XmlInput::m_autoaddentities
protected

Ajoute automatiquement les définitions d'entités au flux de lecteure.

Par défaut, vrai.

◆ m_autonamespaces

bool cogitant::XmlInput::m_autonamespaces
protected

Développe automatiquement les espaces de noms.

Par défaut, vrai.

◆ m_contenthandler

ContentHandler* cogitant::XmlInput::m_contenthandler
protected

Gestionnaire de callbacks.

◆ m_document

XmlDocument* cogitant::XmlInput::m_document
protected

Document dans lequel le contenu du flux sera stocké.

◆ m_ignorecomments

bool cogitant::XmlInput::m_ignorecomments
protected

Ignorer les commentaires.

Par défaut, vrai.

◆ m_istream

IStreamXml cogitant::XmlInput::m_istream
protected

Flux de lecture.

◆ m_memodocument

bool cogitant::XmlInput::m_memodocument
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é.

◆ m_newcontenthandler

ContentHandler* cogitant::XmlInput::m_newcontenthandler
protected

Nouveau gestionnaire de callbacks à prendre en compte dès que possible.

◆ m_stackxmlns

std::vector< std::map<std::string, std::string> > cogitant::XmlInput::m_stackxmlns
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.

◆ m_streaming

bool cogitant::XmlInput::m_streaming
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.

◆ m_xmlns

std::map<std::string,std::string> cogitant::XmlInput::m_xmlns
protected

Espaces de noms xml actifs.