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 :

probléme de lecture de fichier XML [DOM]


Sujet :

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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Points : 22
    Points
    22
    Par défaut probléme de lecture de fichier XML
    j'arrive pas a lire un fichier xml coder en UTF-8, j'ai esseyé mais ca me donne toujours l'erreur "Exception in thread "main" com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 3 of 3-byte UTF-8 sequence."

    j'ai chercher sur internet ils disent que le probléme est dans l'encoding UTF-8
    et qu'il faut la changer en ISO-8859-1, alors j'ai fait un ptit script qui prend la ligne (en String) ou il est écrit UTF-8 et il la change en ISO-8859-1, mais ca me donne cette erreur "An invalid XML character (Unicode: 0x1d) was found in the element content of the document.", mais quand c'est moi qui modifie UTF-8 en ISO-8859-1 dans le fichier XML ca marche super, la je pense que c'est juste un probléme dans la sérialisation du fichier (je pense).

    Mais malgré ca moi ce que je veux qu'il lit le fichier meme si c'est UTF-8

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    import java.io.*;
    import org.w3c.dom.Document;
    import org.w3c.dom.*;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.DocumentBuilder;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException; 
     
    public class EditFile{
     
         public EditFile(String file){
        		docBuilderFactory =DocumentBuilderFactory.newInstance();
                	docBuilder = docBuilderFactory.newDocumentBuilder();
                	doc = docBuilder.parse (new File(file));
                	doc.getDocumentElement().normalize();
        	}
     
        public void GetURL(String url)throws Exception{
        	EditFile out = new EditFile("URLContent.xml");
        	URL yahoo = new URL(url);
            URLConnection yc = yahoo.openConnection();
            yc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.19)");
            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
            String inputLine;
     
        	try {
            while ((inputLine = in.readLine()) != null){
    				out.Write(inputLine);	
        	}
        }
        finally {
          out.close();
        }
            in.close();
        }
     
    public String[][] ReadXML(String Item, String[] Tags ) {                  
                NodeList listOfPersons = doc.getElementsByTagName(Item);
                String[][] TagsContenu = new String[listOfPersons.getLength()][Tags.length];
                for(int s=0; s<listOfPersons.getLength() ; s++){
     
                  Node firstPersonNode = listOfPersons.item(s);
                  if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE){
     
     
                        Element firstPersonElement = (Element)firstPersonNode;
    				for(int i=0; i<Tags.length; i++){
                        NodeList firstNameList = firstPersonElement.getElementsByTagName(Tags[i]);
                        Element firstNameElement = (Element)firstNameList.item(0);
     
                        NodeList textFNList = firstNameElement.getChildNodes();
                        TagsContenu[s][i] = (String)((Node)textFNList.item(0)).getNodeValue().trim();	
    				}
     
                  }//end of if clause
     
     
                }//end of for loop with s var
     
          return TagsContenu;  
        }
     
    public void Write(String topic) throws FileNotFoundException, IOException{
        	output.seek(output.length());
        	if(topic.indexOf("UTF-8") == -1)
        		output.writeBytes(topic);
        	else{
            		topic = topic.replaceFirst("UTF-8", "ISO-8859-1");
    				output.writeBytes(topic);
            	}	
          	output.seek(output.length());
        }
     
    public static void main(String[] args) throws Exception{
          	Connect get = new Connect();
          	get.GetURL("http://google.com");
          	EditFile XMLEdit = new EditFile("URLContent.xml", 'r');
          	String[] tag = {"title", "content", "id", "updated"};
          	String[][] Entry = XMLEdit.ReadXML("entry", tag);
          	for(int i=0; i<Entry.length; i++)
          		for(int j=0; j<Entry[i].length; j++)
          			System.out.println(Entry[i][j]+"\n");
        }
    }
    c'est a peut prés le code, si vous connaissez un autre moyen plus facile dite le moi; je veux que mon programme telecharge les données d'une URL qui est en XML le met dans un fichier et qu'avec une autre méthode qu'il puisse lire le fichier.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    A mon avis ça de ta façon d'écrire le fichier temporaire qui ne spécifie pas l'encodage en écriture alors qu'elle doit correspondre à celle du fichier téléchargé (URLConnection.getContentEncoding() peut aider).

    Mais en fait, tu n'as même pas besoin de cette étape.
    Tu peux créer ton DOM avec n'importe quel "inputStream", donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc = docBuilder.parse (yc.getInputStream());

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

Discussions similaires

  1. [C++ builder 6]Problème de lecture de fichier XML
    Par getz85 dans le forum C++Builder
    Réponses: 8
    Dernier message: 27/03/2009, 17h56
  2. Problème de lecture du fichier hibernate.cfg.xml
    Par fabiolerusse dans le forum Hibernate
    Réponses: 1
    Dernier message: 06/03/2008, 08h28
  3. [XPATH] problème lecture dans fichier XML
    Par DiamonDonald dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 26/02/2008, 09h57
  4. [DOM4J] Problème de lecture de fichier xml avec dom4j
    Par santana2006 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/04/2006, 16h52
  5. VA lors de lecture du fichier XML
    Par LN(a) dans le forum Langage
    Réponses: 6
    Dernier message: 14/09/2005, 23h43

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