IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

Apostrophe dans les attributs [SAX]


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut Apostrophe dans les attributs
    Bonjour à tous et merci d'avance à ceux qui s'intéresseront à mon problème.

    Voici ma situation.
    D'abord, je précise que je travaille sur un produit où être à jour sur les technologies ne fait pas partie des priorités (nous sommes passés à java 1.5 il y a à peine 3 mois ).
    A partir de beans, je génère un fichier XML. Le xsd associé impose de passer les valeurs sous forme d'attributs (pour ceux qui connaissent, il s'agit d'un fichier PES).
    Le moteur est construit en utilisant SAX (Xalan). Les fichiers que nous générons sont tout à fait valides. Mais, dernièrement, on me demande de n'avoir aucun des caractères spécifiques du XML dans les données. Donc, d'encoder les apostrophes.
    Or, l'encoder XML ne traite jamais l'apostrophe (pas besoin puisqu'elle perd sa spécificité en étant encadrée par des doubles quotes).

    Je ne peux pas encoder moi-même l'apostrophe car le & que j'utiliserais alors, lui, se transformerait en &.
    Je me répète, mais mes valeurs sont transmises sous forme d'attribut. Je ne peux donc pas utiliser le paramètre escapeCharacters de la fonction d'écriture qui ne s'applique pas aux attributs.

    La seule solution que je vois actuellement est de repasser dans tout le fichier après sa génération pour faire l'encodage de cette apostrophe J'aimerais éviter cette mauvaise solution.

    Auriez-vous une(des) solution(s) à me proposer ?

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    en gros tu as
    <balise attribut="l'attribut">
    hors tu voudrais créer
    <balise attribut="l&apos;attribut">
    c'est ça?

    Si oui, tu va devoir créer ton propre encodeur sax (basée sur SAXHandler).

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Avec JDOM, ça se fait très facilement à l'aide de XMLOutputter dont on modifie le Format en lui donnant un EscapeStrategy.

    Mais bon, 'faut utiliser JDOM, qui charge le fichier entier en mémoire, ce que SAX n'a pas besoin de faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    Merci pour vos réponses.

    Citation Envoyé par tchize_ Voir le message
    en gros tu as
    <balise attribut="l'attribut">
    hors tu voudrais créer
    <balise attribut="l&apos;attribut">
    c'est ça?

    Si oui, tu va devoir créer ton propre encodeur sax (basée sur SAXHandler).
    C'est bien ce que je veux. J'avais bien peur d'une telle réponse...

    Citation Envoyé par thelvin Voir le message
    Avec JDOM, ça se fait très facilement à l'aide de XMLOutputter dont on modifie le Format en lui donnant un EscapeStrategy.

    Mais bon, 'faut utiliser JDOM, qui charge le fichier entier en mémoire, ce que SAX n'a pas besoin de faire.
    Chargé mon fichier en mémoire est inconcevable. Il est assez fréquent que les fichiers dépassent les 10Mo (les fichiers englobent 0 à n pièces jointes). J'en ai même vu dépassés les 40Mo. De plus, des défauts dans la modélisation initiale (fichiers à traiter stockés au format zip qu'il faut décompresser pour recompresser en gzip et encoder en base 64) nous génère déjà des OutOfMemoryError.
    Vous marrez pas ! j'ai plus déjà presque plus de cheveux sur la tête
    Sinon, pour JDOM, j'ai encore peu pratiquer, mais il me semblait que le chargement complet n'est pas une obligation. JDOM permet la manipulation DOM, SAX et (dans les versions plus récentes) STAX, non ?

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Bon ben du coup t'as pas trop le choix.

    Écrire du XML n'est pas très difficile, c'est conçu pour la simplicité. Surtout si tu as pas de cas bizarre comme des retours à la ligne, de l'indentation, des namespaces... C'est la lecture qui est plus chiante.
    Des trucs de ce genre j'en ai faits en pagaille (mais le moteur appartient à ma boîte, désolé.)

    Citation Envoyé par oO_roma_0o Voir le message
    Sinon, pour JDOM, j'ai encore peu pratiquer, mais il me semble que le chargement complet n'est pas une obligation. JDOM permet la manipulation DOM, SAX et (dans les versions plus récentes) STAX.
    Ben si. Certes, il peut charger à partir de n'importe quelle source, DOM, SAX, StAX et ce n'est franchement pas compliqué d'en faire d'autres. Mais le principe est bel et bien de charger en mémoire.

    Comme son nom l'indique, JDOM est une sorte de DOM repensé pour Java. Or DOM est un modèle permettant la représentation et manipulation d'un document XML entier. Concrètement ça veut dire soit en mémoire, soit lié à une BDD XML (et JDOM ne fait que le "chargé en mémoire").
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    comme dit thelvin, ce n'est pas très compliqué. Si tu utilise déjà XMLStreamWriter, ce n'est pas compliqué de créer un nouveau writer, avec une pattern delegate qui délègue tout sauf writeAttribute, pour lequel il écrit lui même "à sa sauce"

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    Merci pour vos réponses et éclaircissements.
    Je passe le sujet en résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Apostrophe dans les variables postées
    Par Mathieu72 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/02/2007, 14h03
  2. L'apostrophe dans les variable !
    Par leniM dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2006, 02h04
  3. [JDBC]les apostrophes dans les chaines
    Par d_token dans le forum JDBC
    Réponses: 4
    Dernier message: 30/08/2006, 13h32
  4. Réponses: 1
    Dernier message: 01/07/2006, 11h18
  5. [XSL~FO][FOP] variables possibles dans les attributs de tags ?
    Par lebechen dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 29/06/2006, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo