Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Nouvelle API de génération de XML

0 views
Skip to first unread message

Traroth

unread,
Dec 25, 2009, 6:07:06 PM12/25/09
to
Bonjour,

Je viens de mettre en ligne une nouvelle petite API permettant de
générer du XML avec Java.
L'idée est de générer du XML en utilisant une pile. On empile chaque
niveau d'imbrication, et il suffit de dépiler pour redescendre d'un
niveau. L'objectif étant d'obtenir de meilleurs performances qu'avec
ce qui se fait actuellement, genre JDOM ou XStream. J'essayerais de
faire un petit benchmark, à l'occasion.

Ca s'appelle Xpresso, c'est sous LGPL et vous pouvez le trouver ici si
ça vous intéresse :

http://sourceforge.net/projects/xpresso/

Tout feedback m'intéresse, même mauvais...

steph

unread,
Jan 5, 2010, 6:35:31 PM1/5/10
to
Traroth wrote:
> Bonjour,
>
> Je viens de mettre en ligne une nouvelle petite API permettant de
> g�n�rer du XML avec Java.
> L'id�e est de g�n�rer du XML en utilisant une pile. On empile chaque
> niveau d'imbrication, et il suffit de d�piler pour redescendre d'un
> niveau. L'objectif �tant d'obtenir de meilleurs performances qu'avec

> ce qui se fait actuellement, genre JDOM ou XStream. J'essayerais de
> faire un petit benchmark, � l'occasion.

>
> Ca s'appelle Xpresso, c'est sous LGPL et vous pouvez le trouver ici si
> �a vous int�resse :
>
> http://sourceforge.net/projects/xpresso/
>
> Tout feedback m'int�resse, m�me mauvais...

Il n'est pas �vident de savoir quel type d'usage est couvert.
G�n�rer du xml mais � partir de quoi ?
JDOM permet de manipuler
XStream perment de faire du traitement en flux.
Donc xpresso ne semble pas 'concurrencer' cette API ou cette biblioth�que.
A la lecture de la javadoc (c'est la seule documentation disponible ?),
il est surprenant de g�rer une pile sur le document mais pas sur un
�l�m�nt, comment g�rer un arbre ?
D'autre part, je n'ai pas vu d'objet utilisant un outputstream ou un
write - je m'attendais � le voir dans "document" - comment produit-on le
document xml ?

Traroth

unread,
Jan 7, 2010, 3:00:31 PM1/7/10
to
On 6 jan, 00:35, steph <st...@somedomain.com> wrote:
> Traroth wrote:
> > Bonjour,
>
> > Je viens de mettre en ligne une nouvelle petite API permettant de
> > générer du XML avec Java.
> > L'idée est de générer du XML en utilisant une pile. On empile chaque
> > niveau d'imbrication, et il suffit de dépiler pour redescendre d'un
> > niveau. L'objectif étant d'obtenir de meilleurs performances qu'avec

> > ce qui se fait actuellement, genre JDOM ou XStream. J'essayerais de
> > faire un petit benchmark, à l'occasion.

>
> > Ca s'appelle Xpresso, c'est sous LGPL et vous pouvez le trouver ici si
> > ça vous intéresse :
>
> >http://sourceforge.net/projects/xpresso/
>
> > Tout feedback m'intéresse, même mauvais...
>
> Il n'est pas évident de savoir quel type d'usage est couvert.
> Générer du xml mais à partir de quoi ?

> JDOM permet de manipuler
> XStream perment de faire du traitement en flux.
> Donc xpresso ne semble pas 'concurrencer' cette API ou cette bibliothèque.

> A la lecture de la javadoc (c'est la seule documentation disponible ?),
> il est surprenant de gérer une pile sur le document mais pas sur un
> élémént, comment gérer un arbre ?

> D'autre part, je n'ai pas vu d'objet utilisant un outputstream ou un
> write - je m'attendais à le voir dans "document" - comment produit-on le
> document xml ?

Personnellement, j'ai d'abord créé un système analogue (mais dont la
propriété intellectuelle appartient à mon employeur) dans le cadre
d'un projet dans lequel un client Flex communique avec un serveur
Java. Comme la problématique de la montée en charge est très
importante, j'ai abandonné rapidement l'idée d'utiliser des web
services ou même BlazeDS.
Xpresso permet de générer du XML à partir d'une structure de données,
comme une liste, par exemple. Mais il faut construire la logique
permettant de le générer soi-même. Avec JDOM aussi, au demeurant.
Le principe est simple : la pile stocke ta position en profondeur dans
l'arbre. Si tu dépiles et que tu empiles un autre élément, tu créés
une branche parallèle à la première (celle que tu as dépilée).
Actuellement, oui, la Javadoc est la seule documentation. Je vais
toutefois écrire une présentation permettant d'introduire le
fonctionnement.
On peut récupérer le XML sous forme de String ou de Reader, en ce
moment. La version que je vais mettre en ligne dans les prochains
jours permet également de le récupérer sous forme de FileWriter (je
compte également changer le Reader en StringReader). Je prévois aussi
de créer une classe XpressoSource, qui implémentera
javax.xml.transform.Source.

Traroth

unread,
Jan 8, 2010, 5:01:57 AM1/8/10
to
En fait, on peut penser à cette bibliothèque comme à un genre de SAX à
l'envers.

Traroth


On Jan 6, 12:35 am, steph <st...@somedomain.com> wrote:
> Traroth wrote:
> > Bonjour,
>
> > Je viens de mettre en ligne une nouvelle petite API permettant de

> > générer du XML avec Java.
> > L'idée est de générer du XML en utilisant une pile. On empile chaque
> > niveau d'imbrication, et il suffit de dépiler pour redescendre d'un
> > niveau. L'objectif étant d'obtenir de meilleurs performances qu'avec


> > ce qui se fait actuellement, genre JDOM ou XStream. J'essayerais de

> > faire un petit benchmark, à l'occasion.


>
> > Ca s'appelle Xpresso, c'est sous LGPL et vous pouvez le trouver ici si

> > ça vous intéresse :
>
> >http://sourceforge.net/projects/xpresso/
>


> > Tout feedback m'intéresse, même mauvais...
>
> Il n'est pas évident de savoir quel type d'usage est couvert.

> Générer du xml mais à partir de quoi ?


> JDOM permet de manipuler
> XStream perment de faire du traitement en flux.

> Donc xpresso ne semble pas 'concurrencer' cette API ou cette bibliothèque.


> A la lecture de la javadoc (c'est la seule documentation disponible ?),

> il est surprenant de gérer une pile sur le document mais pas sur un
> élémént, comment gérer un arbre ?


> D'autre part, je n'ai pas vu d'objet utilisant un outputstream ou un

> write - je m'attendais à le voir dans "document" - comment produit-on le
> document xml ?

dufr...@gmail.com

unread,
Jan 12, 2010, 5:09:26 AM1/12/10
to
Je viens de publier la version 0.7; Extrait du changelog :

0.7 version, 2010-01-11

Bug fixes/optimizations/refactoring:
-Element.label is now final.
-In the Document.unstack() method: the peekFirst()+removeFirst()
combination is replaced by pollFirst().
-Added a condition on open in the while loop in Document.finish()
(useful in the inherited
ConcurrentDocument class).

New features:
-A getStringReader() method is added to Document, returning the xml
text as a StringReader.
-Document now implements Cloneable. Document.clone() overrides
Object.clone().
and returns a deep copy of the Document, including deep copies of all
Element in the stack (see below).
-Element now implements Cloneable. Element.clone() overrides
Object.clone() and returns a deep copy of
the Element.
-Document now implements CharSequence and the length(), charAt(int),
subSequence(int,int) and toString() methods
are added.
-All classes now implement Serializable and contain a
serialVersionUID.
-Comment, Element, ProcessingInstruction, Comment and CDATA
constructors now protected. Instance are to be created
with methods from Document
-Added a thread-safe ConcurrentDocument class.
-Added a thread-safe ConcurrentElement class.
-Added a org.xpresso.xml.outputOutputter class, to output data in a
Writer ou an OutputStream.


Et maintenant, je vais essayer d'améliorer la qualité : passer aux
tests unitaires, documenter (y compris les packages), avant de
continuer d'ajouter des fonctionnalités. Avant que ça ne devienne trop
gros...

Traroth

0 new messages