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

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

Opération de sauvegarde d'un document XML. More...

#include "xmlio.h"

Public Member Functions

 XmlOutput ()
 Constructeur. More...
 
void reset ()
 Remise à zéro de la configuration de l'opération. More...
 
XmlOutputsetOStream (std::ostream *ostream)
 Choix du flux de sortie. More...
 
XmlOutputsetXmlDocument (XmlDocument const *xmldocument)
 Choix du document à écrire. More...
 
XmlOutputsetAutoEmpty (bool ae)
 Choix de la configuration de sortie des balises vides. More...
 
XmlOutputsetRoot (XmlDocument::Node const *root)
 Choix de la racine qui doit être sortie. More...
 
XmlOutputsetEncoding (Encoding::Type enc)
 Choix de l'encodage de sortie. More...
 
XmlOutputsetAutoNamespaces (bool an)
 Choix de la détection automatique des espaces de noms. More...
 
XmlOutputaddNamespace (std::string const &nsid, std::string const &nsuri)
 Ajout d'un espace de noms. More...
 
XmlOutputclearNamespaces ()
 Vide l'ensemble des espaces de noms connus. More...
 
void run ()
 Exécution de l'opération. More...
 
void runFile (XmlDocument const &doc, std::string const &filename)
 Raccourci pour l'écriture d'un document dans un fichier. More...
 
void runIterative ()
 Commence une sortie de document par appels successifs à runNode(), runElementOpen() et runElementClose(). More...
 
void runNode (XmlDocument::Node const &node)
 Execute une sortie du seul noeud passé. More...
 
void runElementOpen (XmlDocument::Element const &elem)
 Execute une sortie du seul élément passé. More...
 
void runElementClose (XmlDocument::Element const &elem)
 Execute une sortie du seul élément passé. More...
 
std::string replaceSpecialChars (std::string const &s)
 Remplace les caractères spéciaux par les entités correspondantes. More...
 
bool containsSpecialChars (std::string const &s)
 La chaîne contient-elle des caractères spéciaux qui l'empêchent d'être sortie comme nom d'élément/attribut. More...
 

Protected Member Functions

void writeNode (XmlDocument::Node const &node, unsigned short tabs, bool cr=true, bool recurs=true)
 Ecriture d'un noeud (et de des fils) dans le flux de sortie. More...
 
void writeNamespaces ()
 Ecrit les déclarations d'espaces de noms. More...
 
void writeName (std::string const &s)
 Ecrit une chaîne correspondant à un nom d'élément ou d'attribut. More...
 
void writeRaw (std::string const &s)
 Ecrit une chaîne en faisant une éventuelle conversion d'encodage. More...
 
void writeString (std::string const &s)
 Ecriture d'une chaîne (texte, élément, attribut, valeur). More...
 
void writeCdata (std::string const &s)
 Ecriture d'une chaîne dans une section CDATA. More...
 
void writeXmlDeclaration (XmlDocument::XmlDeclaration const &n, unsigned short tabs)
 Ecriture d'une noeud XmlDeclaration. More...
 
void writeDoctypeDeclaration (XmlDocument::DoctypeDeclaration const &n, unsigned short tabs)
 Ecriture d'une noeud DoctypeDeclaration. More...
 
void writeElement (XmlDocument::Element const &n, unsigned short tabs, bool recurs=true)
 Ecriture d'une noeud Element. More...
 
void writeComment (XmlDocument::Comment const &n, unsigned short tabs)
 Ecriture d'une noeud Comment. More...
 
void writeTabs (unsigned short tabs)
 Ecriture de tabulations. More...
 

Protected Attributes

std::ostream * m_ostream
 Flux de sortie.
 
XmlDocument const * m_xmldocument
 Document à écrire.
 
bool m_autoempty
 Sortir les balises sans fils comme balises vides. More...
 
XmlDocument::Node const * m_root
 Racine des balises à sortir. More...
 
Encoding::Type m_encoding
 Encodage utilisé pour la sortie. More...
 
std::list< std::pair< std::string, std::string > > m_namespaces
 Les espaces de noms utilisés dans l'opération de sortie. More...
 
bool m_autonamespaces
 Détection automatique des espaces de noms lors de la sortie d'éléments. More...
 
bool m_currentisempty
 Etat du dernier élément écrit dans le flux. More...
 
bool m_currentcontainstext
 L'élément courant ne contient que du texte. More...
 
unsigned short m_depth
 Profondeur actuelle. More...
 

Detailed Description

Opération de sauvegarde d'un document XML.

Constructor & Destructor Documentation

◆ XmlOutput()

cogitant::XmlOutput::XmlOutput ( )

Constructeur.

Member Function Documentation

◆ addNamespace()

XmlOutput& cogitant::XmlOutput::addNamespace ( std::string const &  nsid,
std::string const &  nsuri 
)

Ajout d'un espace de noms.

Parameters
nsididentificateur de l'espace de noms.
nsuriURI de l'espace de noms.

◆ clearNamespaces()

XmlOutput& cogitant::XmlOutput::clearNamespaces ( )

Vide l'ensemble des espaces de noms connus.

◆ containsSpecialChars()

bool cogitant::XmlOutput::containsSpecialChars ( std::string const &  s)

La chaîne contient-elle des caractères spéciaux qui l'empêchent d'être sortie comme nom d'élément/attribut.

◆ replaceSpecialChars()

std::string cogitant::XmlOutput::replaceSpecialChars ( std::string const &  s)

Remplace les caractères spéciaux par les entités correspondantes.

◆ reset()

void cogitant::XmlOutput::reset ( )

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

◆ run()

void cogitant::XmlOutput::run ( )

Exécution de l'opération.

Le document est envoyé complètement sur le flux de sortie.

◆ runElementClose()

void cogitant::XmlOutput::runElementClose ( XmlDocument::Element const &  elem)

Execute une sortie du seul élément passé.

◆ runElementOpen()

void cogitant::XmlOutput::runElementOpen ( XmlDocument::Element const &  elem)

Execute une sortie du seul élément passé.

◆ runFile()

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

Raccourci pour l'écriture d'un document dans un fichier.

◆ runIterative()

void cogitant::XmlOutput::runIterative ( )

Commence une sortie de document par appels successifs à runNode(), runElementOpen() et runElementClose().

◆ runNode()

void cogitant::XmlOutput::runNode ( XmlDocument::Node const &  node)

Execute une sortie du seul noeud passé.

◆ setAutoEmpty()

XmlOutput& cogitant::XmlOutput::setAutoEmpty ( bool  ae)

Choix de la configuration de sortie des balises vides.

◆ setAutoNamespaces()

XmlOutput& cogitant::XmlOutput::setAutoNamespaces ( bool  an)

Choix de la détection automatique des espaces de noms.

Parameters
ansi true lors de l'écriture d'un noeud, les espaces de noms connus de l'opération sont cherchés dans les noms de l'élément et les noms des attributs. Les espaces de noms trouvés sont alors remplacés par leur identificateur, ce qui produit un fichier plus court, mais ralentit l'opération de sortie.

◆ setEncoding()

XmlOutput& cogitant::XmlOutput::setEncoding ( Encoding::Type  enc)

Choix de l'encodage de sortie.

Parameters
encSi Encoding::DEFAULT, utilise l'encodage du document (celui présent dans la déclaration XML). Si celui-ci est absent, utilise l'encodage par défaut de l'application. Si enc est différent de Encoding::DEFAULT, utilise cet encodage-là (même si la déclaration XML du document contient autre chose). Pour l'instant seules les sorties en Latin9 et Utf-8 sont fonctionnelles.

◆ setOStream()

XmlOutput& cogitant::XmlOutput::setOStream ( std::ostream *  ostream)

Choix du flux de sortie.

◆ setRoot()

XmlOutput& cogitant::XmlOutput::setRoot ( XmlDocument::Node const *  root)

Choix de la racine qui doit être sortie.

Si NULL, tout est sorti.

◆ setXmlDocument()

XmlOutput& cogitant::XmlOutput::setXmlDocument ( XmlDocument const *  xmldocument)

Choix du document à écrire.

◆ writeCdata()

void cogitant::XmlOutput::writeCdata ( std::string const &  s)
protected

Ecriture d'une chaîne dans une section CDATA.

◆ writeComment()

void cogitant::XmlOutput::writeComment ( XmlDocument::Comment const &  n,
unsigned short  tabs 
)
protected

Ecriture d'une noeud Comment.

◆ writeDoctypeDeclaration()

void cogitant::XmlOutput::writeDoctypeDeclaration ( XmlDocument::DoctypeDeclaration const &  n,
unsigned short  tabs 
)
protected

Ecriture d'une noeud DoctypeDeclaration.

◆ writeElement()

void cogitant::XmlOutput::writeElement ( XmlDocument::Element const &  n,
unsigned short  tabs,
bool  recurs = true 
)
protected

Ecriture d'une noeud Element.

◆ writeName()

void cogitant::XmlOutput::writeName ( std::string const &  s)
protected

Ecrit une chaîne correspondant à un nom d'élément ou d'attribut.

◆ writeNamespaces()

void cogitant::XmlOutput::writeNamespaces ( )
protected

Ecrit les déclarations d'espaces de noms.

◆ writeNode()

void cogitant::XmlOutput::writeNode ( XmlDocument::Node const &  node,
unsigned short  tabs,
bool  cr = true,
bool  recurs = true 
)
protected

Ecriture d'un noeud (et de des fils) dans le flux de sortie.

◆ writeRaw()

void cogitant::XmlOutput::writeRaw ( std::string const &  s)
protected

Ecrit une chaîne en faisant une éventuelle conversion d'encodage.

◆ writeString()

void cogitant::XmlOutput::writeString ( std::string const &  s)
protected

Ecriture d'une chaîne (texte, élément, attribut, valeur).

◆ writeTabs()

void cogitant::XmlOutput::writeTabs ( unsigned short  tabs)
protected

Ecriture de tabulations.

◆ writeXmlDeclaration()

void cogitant::XmlOutput::writeXmlDeclaration ( XmlDocument::XmlDeclaration const &  n,
unsigned short  tabs 
)
protected

Ecriture d'une noeud XmlDeclaration.

Member Data Documentation

◆ m_autoempty

bool cogitant::XmlOutput::m_autoempty
protected

Sortir les balises sans fils comme balises vides.

C'est à dire terminées par />.

◆ m_autonamespaces

bool cogitant::XmlOutput::m_autonamespaces
protected

Détection automatique des espaces de noms lors de la sortie d'éléments.

Cela ralentit forcément la sortie.

◆ m_currentcontainstext

bool cogitant::XmlOutput::m_currentcontainstext
protected

L'élément courant ne contient que du texte.

(utilisé pour faire une sortie plus compacte : on ne passe pas à la ligne)

◆ m_currentisempty

bool cogitant::XmlOutput::m_currentisempty
protected

Etat du dernier élément écrit dans le flux.

true ssi l'élément est vide (pour l'instant).

◆ m_depth

unsigned short cogitant::XmlOutput::m_depth
protected

Profondeur actuelle.

◆ m_encoding

Encoding::Type cogitant::XmlOutput::m_encoding
protected

Encodage utilisé pour la sortie.

◆ m_namespaces

std::list< std::pair< std::string, std::string > > cogitant::XmlOutput::m_namespaces
protected

Les espaces de noms utilisés dans l'opération de sortie.

Le premier élément de chaque pair est l'identifiant de l'espace de nom et le second élément l'URI.

◆ m_root

XmlDocument::Node const* cogitant::XmlOutput::m_root
protected

Racine des balises à sortir.

Si NULL, tout est sorti.