From: Benoit Lefevre (benoit.lefevre@effix.fr)
Date: 03/08/2001 - 13:50
Bonjour.
Il est a note que la methode transcode aloue de la memoire a chaque appels ...
Si ca peut servire, quelques outils qui font des convertions a la vole sans qu'on
ai a s'occuper de la memoire.
Ce n'est pas grandiose ... mais ca fait deja quelques lignes de plus en moins
a coder :).
J'ai place ca dans un utils.h (a un ou deux include pres ... ) :
-----------------------------------------------------------------
#include <dom/DOM.hpp>
#include <string>
string DOM_NodeToString(DOM_Node node);
string itos(int i,int base = 10);
string dstos(DOMString const &chaine);
DOMString itods(int i,int base = 10);
DOMString stods(string const &chaine);
int dstoi(DOMString const &chaine);
int stoi(string const &s);
-----------------------------------------------------------------
et dans le .cpp correspondant :
-----------------------------------------------------------------
#include "MDE_utils.h"
string itos(int i,int base)
{
static char buf[50];
_itoa(i,buf,base);
return string(buf);
}
DOMString itods(int i,int base)
{ return stods(itos(i,base)); }
int stoi(string const &s)
{ return atoi(s.data()); }
int dstoi(DOMString const &chaine)
{
char *tmp;
int ret;
tmp = chaine.transcode();
ret = atoi(tmp);
delete [] tmp;
return ret;
}
string dstos(DOMString const &chaine)
{
static char *tmp;
static string ret;
tmp = chaine.transcode();
ret = string(tmp);
delete [] tmp;
return ret;
}
DOMString stods(string const &chaine)
{ return DOMString(chaine.data()); }
string DOM_NodeToString(DOM_Node elem)
{
string ret;
DOM_NamedNodeMap att;
ret += "<" + dstos(elem.getNodeName());
att = elem.getAttributes();
for(int i=0; i<att.getLength(); i++)
ret += " [" + dstos(att.item(i).getNodeName()) + " = " + dstos(att.item(i).getNodeValue()) +"]";
ret += ">";
return ret;
}
-----------------------------------------------------------------
La fonction DOM_NodeToString fabrique la representation
sous forme de string d'un noeud et de ses attributs.
Cordialement.
benoit.
PS : Ca ne marchera surment pas du premier coup j'ai fait
un copier - coller approximatif :( . Il ne doit par contre pas y
avoir grand choses a corriger :) .
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|