Problème de parseur XML

cs_marianna Messages postés 1 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 22 juillet 2009 - 22 juil. 2009 à 19:23
FlopFlo Messages postés 20 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 5 août 2009 - 5 août 2009 à 14:19
bonjour à tous,
bon voilà je suis entrain de développer en java et je rencontre un problème pour parser mon fichier XML.l'erreur que je récupère est la suivante:
[Fatal Error] :1:1: Premature end of file.
erreur dans le parseur !
Echec de l'extraction des données du document ! :(

je vous remercie d'avance pour votre aide, elle me sera très précieuse.
voici mon code:
package com.eclipsetotale;

/*import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;*/
//import java.io.BufferedReader;
//import java.io.BufferedOutputStream;
import java.io.DataInputStream;
//import java.io.File;
import java.io.InputStream;
//import java.io.FileOutputStream;
//import java.io.InputStream;
import java.io.IOException;
//import java.io.BufferedOutputStream;
//import java.io.RandomAccessFile;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.xml.sax.SAXException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

public class URLConnectionReader{

/*public static File SaveInFile (String completePathFile, DataInputStream dis) throws IOException{
File Initfile = new File(completePathFile);
if(!Initfile.exists())
Initfile.createNewFile();

FileOutputStream stream = new FileOutputStream(completePathFile);
BufferedOutputStream bos = null;
try {
int read_bytes = 0;
byte[] buffer = new byte[10000];


bos = new BufferedOutputStream(stream, buffer.length+1);
while ( (read_bytes = dis.read(buffer, 0, buffer.length))!= -1)
{
bos.write(buffer,0, read_bytes);
}

}catch(IOException ex){
throw new IOException("ERROR IN SAVING FILE !! pathFile : "+Initfile.getAbsolutePath());
} finally {
bos.flush();
bos.close();
stream.close();
}
return Initfile;
}

/*public static void ModifFile(String completePathFile) throws Exception{

File file=new File("C:\\Users\\myriam\\Desktop\\recup_codesource");
RandomAccessFile Randomfile;
Randomfile =new RandomAccessFile(file,"rw");
Randomfile.seek(0); // pointeur sur le début du fichier
Randomfile.writeBytes("<!DOCTYPE html PUBLIC "+'"'+"-//W3C//DTD XHTML 1.0 Strict//EN"+'"'+" "+'"'+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"+'"'+">");
Randomfile.seek(1);
Randomfile.close();
}

*/
/*public static void ReadFile (String completePathFile1) throws IOException{
BufferedReader br = null ;
try{
FileReader fr = new FileReader(completePathFile1);
br = new BufferedReader(fr);
}
catch (IOException e) {
e.printStackTrace ();}
String texte = "";
boolean eof = false;
while (!eof){
try {
texte = br.readLine() ;
}catch (IOException e) {
eof = true;}
br.close();
if (!eof)
System.out.print(texte);}
}
*/
public static ArrayList<Element> getLinks(DataInputStream dis) throws Exception{
ArrayList<Element> liens = new ArrayList<Element>();

InputStream in = null;;
in = (InputStream)dis;
// Création du parser DOM

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
documentBuilderFactory.setValidating(false);// pour valider la DTD
documentBuilderFactory.setIgnoringElementContentWhitespace(true);
DocumentBuilder documentBuilder;

try {
documentBuilder = documentBuilderFactory.newDocumentBuilder();
// On parse le document XML en arbre DOM
Document document = null;
try {

document = documentBuilder.parse(dis);

} catch (SAXException sax) {
System.err.println("erreur dans le parseur !");
}

Element racine = document.getDocumentElement(); //récupérer la racine du document
NodeList liste = racine.getElementsByTagName("a");

for(int i=0; i<liste.getLength(); i++){
Element e = (Element)liste.item(i);
if(e.hasAttribute("href"))liens.add(e);
}
} catch (Exception ioe) {
System.err.println("Echec de l'extraction des données du document ! :(");}
return liens;
}


@SuppressWarnings("deprecation")
public static void main(String args[])throws Exception {

try {
URL BBC = new URL("http://www.bbc.co.uk");
URLConnection BBCConnection = BBC.openConnection();
DataInputStream dis = new DataInputStream(BBCConnection.getInputStream());
String inputLine;
// String completePathFile1 = "C:\\Users\\myriam\\Desktop\\recup_codesource";

while ((inputLine = dis.readLine()) != null) {
//file = SaveInFile(completePathFile1, dis);
System.out.println(inputLine);
}

ArrayList<Element> liens = getLinks(dis);
for(Element lien : liens){
String href = lien.getAttribute("href");
String texte = lien.getTextContent();
texte = (texte!=null)?texte:href;
System.out.println("Lien "+texte+" pointe sur "+href);
}
dis.close();
} catch (MalformedURLException me) {
System.out.println("MalformedURLException: " + me);
} catch (IOException ioe) {
System.out.println("IOException: " + ioe);

}
}
}

1 réponse

FlopFlo Messages postés 20 Date d'inscription lundi 30 octobre 2006 Statut Membre Dernière intervention 5 août 2009
5 août 2009 à 14:19
Je ne me suis pas trop attardé sur le code java vu que l'erreur n'a pas l'air de venir de là (et que c'est difficilement lisible, pensez a ajouter les balises code)

Je dirai que le probleme vient du fichier XML qui est malformé, peux-tu le poster ?

J'ai dejà fait un petit pojet de parseur XML en java, je regarderai si j'ai encore ça sous la main, bonne chance
0
Rejoignez-nous