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

Langage Java Discussion :

Encodage de String


Sujet :

Langage Java

  1. #21
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par NeptuS Voir le message
    - La fusion de deux xml ne se résume pas à une concaténation. Si tu dois lire le contenu avant de le fusionner, alors tu retombes dans la problématique d'encodage.
    Sauf que dans le code qu'il donne, il se contente de recopier les fichiers les un à la suite, sans aucun traitement particulier.

    Mais il est vraiment que dans ce cas on n'a pas là des fichiers XML valides.


    Citation Envoyé par NeptuS Voir le message
    - Si tu juxtapose, en binaire, 2 caractères dans des encodages différents, l'un des deux sera mal lu à la relecture du fichier résultat : la lecture est encore dépendante de l'encodage.
    Ma remarque concernait uniquement des fichiers avec le même encodage. J'aurais dû le préciser en effet.



    a++

  2. #22
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    La remarque d'adiGuba est juste : ton code n'est pas valide pour de la fusion d'xml "valides"
    kululu, pourrais-tu fournir un court exemple de fichier source et de destination que tu veux ?

  3. #23
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut
    En effet (désolé j'ai un peu oublier ce topic tellement je me prends la tête sur cette histoire)

    Donc oui le xml ne sera pas valide (même si je fais un .setOmitDeclaration(true) puisque j'aurais plusieurs racines d'affilés)

    Donc comme j'ai pas trouvé de solution je refait un parse (pas super optimal tout ça ) ou je "write" une racine avant de commencer a lire mon fichier et que dès que je rencontre une racine de mon fichier je le zappe et lorsque ma boucle est finie je "write" la fermeture de la balise.

    Sauf si quelqu'un à une meilleure solution (et ça sera pas de refus)

  4. #24
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    utilise une lib pour lire ET / OU écrire ton xml : tu m'as l'air de bien te prendre la tête pour pas grand chose là ...

  5. #25
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut
    Oui tu as raisons je vais essayer de voir ce que je peux faire avec JDOM

  6. #26
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut
    Mon xml se compose comme cela


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <forms>
       <form>
           <etc></etc>
           <etc></etc>
           ......
     
       </form>
    </forms>
    Le principe je fais la boucle sur tous mes fichiers xml je fais le teste pour un seul élément form pour l'instant (le premier)

    Donc je get tout l'élément form de chaque fichier xml que j'ai et que je rajoute à la racine de forms de mon nouveau fichier. Mais cela ne marche pas, j'ai l'exception suivante

    org.jdom.IllegalAddException: The Content already has an existing parent "forms"

    Voila mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    private Element newRacine = new Element("forms");
    private org.jdom.Document newDocument = new Document(newRacine);
    [...]
    for (int i = 0; i < sources.size(); i++) {
    			try {
    				org.jdom.Document document ;
    				File fichier = new File(sources.get(i));
    				document = sxb.build(fichier);
    				Element racine = document.getRootElement();
     
     
    				newDocument.setContent(racine.getContent(1));
     
    			}
    Pourquoi cela ne marche pas?

  7. #27
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    Essaye d'afficher le nom du tag racine : vérifie que c'est bien "forms"
    idem pour racine.getContent(1)

  8. #28
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    tu dois détacher les noeuds de leur parent avant de les attacher à un autre parent (méthode detach())

  9. #29
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    tu dois détacher les noeuds de leur parent avant de les attacher à un autre parent (méthode detach())
    Il fallait le savoir Merci je vois le bout du tunnel

    Ensuite quand je stocke dans une liste le getContent(), il ne me stocke par forcément des Element du coup forcément ça plante quand je fais ça (Erreur : cannot be cast to org.jdom.Element)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    List<Element> listeElement=  racine.getChildren();
     
     
    				for(int j=0;j<listeElement.size();j++){
    					System.out.println(listeElement.get(j).toString());
    					Element form = (Element) racine.getContent(j).detach();
    				        newDocument.setContent(form);
    				}
    Par contre ce qui est bizarre c'est que dans la boucle j si je remplace par
    System.out.println("Element ="+listeElement.get(j).toString()+" CLASS="+listeElement.get(j).getClass());
    Il me dit que c'est que des "class org.jdom.Element"

  10. #30
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut
    Je trouve vraiment pas la solution
    Finalement je suis arrivé à ce résultat

    erreur : Exception in thread "AWT-EventQueue-0" org.jdom.IllegalAddException: Cannot add a second root element, only one is allowed


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private Element newRacine = new Element("forms");
    	private org.jdom.Document newDocument = new Document(newRacine);
     
    ....
     
    org.jdom.Document document ;
    				File fichier = new File(sources.get(i));
    				document = sxb.build(fichier);
    				Element racine = document.getRootElement();
     
    List listeElement=  racine.getChildren();
    				Element formElem = (Element) listeElement.get(1);
    				newDocument.addContent(formElem);
    Je récupère la liste des enfants de la racine de l'ancien fichier
    Ensuite je créé un nouvel élément (en prenant pour tester d'abord le 1er element form)

    Enfin je add dans mon nouveau document l'Element que je viens de creer

    je rappelle que mon fichier xml a ce pattern (en gras ce que je veux copier dans mon nouveau fichier)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <forms>
        <form>
             <etc>
                 <etc2>
                     .......
                  </etc2>
              </etc>
        </form>
    </forms>

  11. #31
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    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 483
    Par défaut
    tu dois faire getContent().getChildren() et les ajouter via newDocument.getContent().add() et non pas via setContent

  12. #32
    Membre confirmé Avatar de kululu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2009
    Messages : 120
    Par défaut
    Je dois vraiment être nul mais ça marche pas du tout et par défaut eclipse ne me propose pas automatiquement getContent().getChildren()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    try {
    				org.jdom.Document document ;
    				File fichier = new File(sources.get(i));
    				document = sxb.build(fichier);
    				Element racine = document.getRootElement();
     
    				List<Element> contentList = racine.getContent();
     
    				for(int j=0; j<contentList.size();j++){
    					List childrenList =contentList.get(j).getChildren(); // ERREUR:  java.lang.ClassCastException: org.jdom.Text cannot be cast to org.jdom.Element
     
    					for(int k=0;k<childrenList.size();k++){
    						newDocument.getContent().add(childrenList.get(k));
    					}
    				}

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Encodage des string sur une socket
    Par barbug dans le forum Qt
    Réponses: 17
    Dernier message: 15/02/2009, 14h17
  2. Encodage de string bizzard
    Par aeroox dans le forum C#
    Réponses: 3
    Dernier message: 26/11/2008, 19h26
  3. problème d'encodage de String
    Par troussepoil dans le forum Langage
    Réponses: 9
    Dernier message: 20/02/2008, 21h11
  4. encodage d'une string en XML
    Par maxvador dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2006, 17h57
  5. [String] Encodage de caractères pour une sortie HTML
    Par elitost dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 10/11/2004, 08h02

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