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 :

[Xerces] Insertion d'une entité


Sujet :

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

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 51
    Points : 62
    Points
    62
    Par défaut [Xerces] Insertion d'une entité
    Suite à mon problème d'espace manquant dans mon XML, j'aurais besoin de remplacer les espaces par des entités nbsp. Comment puis-je inserer des entités dans mon arbre DOM ?

  2. #2
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 39
    Points : 42
    Points
    42
    Par défaut
    peux-tu nous rappeller quelle était la difficulté abordée dans ton précédent message?
    les espaces sont repérés comment etc ...

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 51
    Points : 62
    Points
    62
    Par défaut
    Dans un programme Java, je lis une chaine de caractere contenant un nombre variable d'espaces en debut et fin. Je créé un TextNode avec cette chaine. Mais voila, la chaine est "trimée", c'est à dire que les espaces en debut et fin de chaine sont supprimés dans le XML. Après avoir tenté une approche avec un CDATA (qui permet effectivement de conserver les espaces. Malheureusement, ils sont trimés ensuite par le XSL transformant le fichier XML en HTML), j'ai tenté de remplacer les espaces par des entités #160 permettant d'afficher un espace. Dans une section CDATA, le HTML final affiche effectivement la chaine correspondante au code de l'entité. Dans un TextNode, le & est remplacé par la chaine correpondante au code de l'entité, c'est à dire &. Je cherche donc à inserer des entités dans mon arbre DOM avec createEntityReference, mais cette methode n'accepte que les chaines sans caracteres speciaux comme parametres (pas de #), ce qui ne me sert à rien, puisque mon document XML ne fait pas reference à une DTD, c'est à dire que je ne peux pas utiliser d'entité que j'aurais definie. En fait j'ai essayé tout un tas de solutions qui marchent toutes PRESQUE. A chaque fois, il ne manque qu'une petite bricole. C'est rageant. Si quelqu'un avait la solution miracle, ça m'arrangerait enormement...

  4. #4
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 39
    Points : 42
    Points
    42
    Par défaut
    est-ce que tu ne peux pas faire un test du genre(la syntaxe n'est évidemment pas exacte):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nodeVal=node.value;
    if(nodeVal.indexOf(" ")!=(-1))
      nodeVal.replace(" ";"*");
    après, tu n'as plus de problème dans ta xsl?
    je ne comprend pas pourquoi ton remplacement par * ne fonctionne pas?

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 51
    Points : 62
    Points
    62
    Par défaut
    Le problème, c'est que quand je fais le setNodeValue, DOM interprete le contenu de la chaine de remplacement: Je lui met   et il met  
    Et là, ça ne marche plus du tout, evidemment.

  6. #6
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 39
    Points : 42
    Points
    42
    Par défaut
    ok!
    Il y a peut-être un moyen de t'en sortir simplement, par contre, ce n'est peut-être pas très "orthodoxe":
    dans un premier temps, tu remplaces tout les blancs par des "$$#160;"
    Tu fais tout ce que tu as à faire dans ton arbre.
    Une fois la transformation xslt effectuée, tu récupères le flux de sortie, et tu remplaces tous les "$$" par "&" .
    cependant, je ne sais pas si ça peut te convenir, ne sachant pas si la transformation xslt se fait au niveau de ton programme java.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 51
    Points : 62
    Points
    62
    Par défaut
    C'est une bonne idée, mais ça n'est pas faisable, en l'occurence. Il me faut une solution fiable

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 51
    Points : 62
    Points
    62
    Par défaut
    En fait, la solution la plus proche de que je voulais, c'etait d'ajouter des fils EntityReference à mon arbre DOM, mais la methode createEntityRefernce n'accepte pas de caractere #, je ne peux donc pas mettre de #160. Quant à &nbsp, ça n'est pas une entité predefinie en XML, il faudrait donc une DTD. Or il n'y a pas de DTD.

  9. #9
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 39
    Points : 42
    Points
    42
    Par défaut
    tu mets #160 ou   ?
    dans ton texte, tu parles de #160 et de   -> d'où ma question.
    La syntaxe exacte est  
    (& et ; étant interprété comme séparateur).

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 51
    Points : 62
    Points
    62
    Par défaut
      evidemment, sinon, ça n'est pas une entité. Mais quand tu utilises la methode createEntityReference de Document, il faut lui passer en parametre uniquement le contenu de l'entité, soit #160 en l'occurence. Il est sensé ajouter lui meme le & et le ;. Le probleme est que le # ne passe pas.

  11. #11
    Membre averti Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 064
    Points : 420
    Points
    420
    Par défaut
    Bonjour,

    Je rencontre le même problème... Voici un début de solution:
    http://www.developpez.net/forums/sho...d.php?t=549122

    Enfin, si ce sujet est toujours d'actualité chez toi.

Discussions similaires

  1. Détection insertion dans une Table
    Par abelman dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 06/07/2004, 14h24
  2. [FLASH MX]Insertion d'une animation Flash
    Par San Soussy dans le forum Flash
    Réponses: 2
    Dernier message: 10/06/2004, 14h13
  3. [Date][SQL date][Format] insertion d'une heure
    Par goulime dans le forum JDBC
    Réponses: 11
    Dernier message: 26/01/2004, 11h38
  4. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34
  5. Insert ds une column identity
    Par Trahwn dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 06/10/2003, 15h14

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