Erreur en java (xml)

bon j’ai ca comme erreur et je ne pige pas trop le xml est valide pourtant :
[codebox]
java.net.MalformedURLException: no protocol: <?xml version="1.0" encoding="UTF-8"?>Seagull367434Robin367525Crow367628
at java.net.URL.(Unknown Source)
at java.net.URL.(Unknown Source)
at java.net.URL.(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unkn

own Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(U

nknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)No of Employees ‘0’.

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at xmlparser.XmlParser.parseDocument(XmlParser.java:47)
at xmlparser.XmlParser.runExample(XmlParser.java:31)
at xmlparser.XmlParser.main(XmlParser.java:107)

[/codebox]

et mon source c’est
[codebox]
package xmlparser;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

public class XmlParser extends DefaultHandler{

List myEmpls;

private String tempVal;

//to maintain context
private Employee tempEmp;


public XmlParser(){
	myEmpls = new ArrayList();
}

public void runExample() {
	parseDocument();
	printData();
}

private void parseDocument() {
	
	//get a factory
	SAXParserFactory spf = SAXParserFactory.newInstance();
	try {
	
		//get a new instance of parser
		SAXParser sp = spf.newSAXParser();
		
		//parse the file and also register this class for call backs
		 String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Personnel><Employee type=\"permanent\"><Name>Seagull</Name><Id>3674</Id><Age>34</Age></Employee><Employee type=\"contract\"><Name>Robin</Name><Id>3675</Id><Age>25</Age></Employee><Employee type=\"permanent\"><Name>Crow</Name><Id>3676</Id><Age>28</Age></Employee></Personnel>";
		
		sp.parse(xml, this);
		
	}catch(SAXException se) {
		se.printStackTrace();
	}catch(ParserConfigurationException pce) {
		pce.printStackTrace();
	}catch (IOException ie) {
		ie.printStackTrace();
	}
}

/**
 * Iterate through the list and print
 * the contents
 */
private void printData(){
	
	System.out.println("No of Employees '" + myEmpls.size() + "'.");
	
	Iterator it = myEmpls.iterator();
	while(it.hasNext()) {
		System.out.println(it.next().toString());
	}
}


//Event Handlers
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
	//reset
	tempVal = "";
	if(qName.equalsIgnoreCase("Employee")) {
		//create a new instance of employee
		tempEmp = new Employee();
		tempEmp.setType(attributes.getValue("type"));
	}
}


public void characters(char[] ch, int start, int length) throws SAXException {
	tempVal = new String(ch,start,length);
}

public void endElement(String uri, String localName, String qName) throws SAXException {

	if(qName.equalsIgnoreCase("Employee")) {
		//add it to the list
		myEmpls.add(tempEmp);
		
	}else if (qName.equalsIgnoreCase("Name")) {
		tempEmp.setName(tempVal);
	}else if (qName.equalsIgnoreCase("Id")) {
		tempEmp.setId(Integer.parseInt(tempVal));
	}else if (qName.equalsIgnoreCase("Age")) {
		tempEmp.setAge(Integer.parseInt(tempVal));
	}
	
}

public static void main(String[] args){
	XmlParser spe = new XmlParser();
	spe.runExample();
}

}
[/codebox]

je viens d’essayer en mettant ca :
[codebox]
String xml = “<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<Employee type=“permanent”>\nSeagull\n3674\n34\n\n<Employee type=“contract”>\nRobin\n3675\n25\n\n<Employee type=“permanent”>\nCrow\n3676\n28\n\n”;
[/codebox]
ca bug toujours de la meme maniere

Tu ne passe pas les bons parametres, d’après la doc:
oid parse(String uri, DefaultHandler dh)
Parse the content described by the giving Uniform Resource Identifier (URI) as XML using the specified DefaultHandler.
Il te faut un URI.

Tu devrais regarder du coté des inputstream pour parser du texte, du genre: http://java.sun.com/j2se/1.4.2/docs/api/ja…DefaultHandler)

[quote=“pom2pin, post:2, topic: 27128”]Tu ne passe pas les bons parametres, d’après la doc:
oid parse(String uri, DefaultHandler dh)
Parse the content described by the giving Uniform Resource Identifier (URI) as XML using the specified DefaultHandler.
Il te faut un URI.[/quote]

yep je viens de voir ca mais j’aimerais un parser qui m’analyse un string et non pas un fichier en fait …

voila
Bussiere

[quote=« Bussiere, post:3, topic: 27128 »]yep je viens de voir ca mais j’aimerais un parser qui m’analyse un string et non pas un fichier en fait …

voila
Bussiere[/quote]

Tu peux faire qqchose comme ça:
String myString = « myString »;
byte currentXMLBytes[] = myString.getBytes();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(currentXMLBytes);
et ensuite tu parses ton stream :stuck_out_tongue:

[quote=“pom2pin, post:4, topic: 27128”]Tu peux faire qqchose comme ça:
String myString = “myString”;
byte currentXMLBytes[] = myString.getBytes();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(currentXMLBytes);
et ensuite tu parses ton stream :P[/quote]
bon j’ai essayé je suis neuneu désolé mais il me met une erreur pourtant j’ai bien mis le
import java.io.InputStream;
il me met :
[codebox]
Severity Description Resource In Folder Location Creation Time Id
2 ByteArrayInputStream cannot be resolved to a type XmlParser.java XmlParser/src/xmlparser line 48 23 janvier 2006 20:17:31 115
[/codebox]
erf
Bussiere

[quote=“Bussiere, post:5, topic: 27128”]bon j’ai essayé je suis neuneu désolé mais il me met une erreur pourtant j’ai bien mis le
import java.io.InputStream;
il me met :

Severity Description Resource In Folder Location Creation Time Id 2 ByteArrayInputStream cannot be resolved to a type XmlParser.java XmlParser/src/xmlparser line 48 23 janvier 2006 20:17:31 115
erf
Bussiere[/quote]

T’aurais pas oublié l’import pour le ByteArrayInputStream?

c’est java.io.InputStream non ?

perdu :stuck_out_tongue:
java.io.ByteArrayInputStream

Je ne sais pas ce qu’on t’a conseillé comme IDE mais eclipse résoud ce genre de problème tout seul en cliquant sur la petite icone d’erreur à gauche de ton source.

[quote=« pom2pin, post:8, topic: 27128 »]perdu :stuck_out_tongue:
java.io.ByteArrayOutputStream

Je ne sais pas ce qu’on t’a conseillé comme IDE mais eclipse résoud ce genre de problème tout seul en cliquant sur la petite icone d’erreur à gauche de ton source.[/quote]
yep mais l’erreur reste et c’est la même :confused:
[codebox]
ByteArrayInputStream cannot be resolved to a type
ByteArrayInputStream cannot be resolved to a type
[/codebox]
Bussiere

je m’étais trompé dans l’import, c’est pas Output mais InputStream…
Si ça ne marche tjrs pas reposte ton source.

[quote=“pom2pin, post:10, topic: 27128”]je m’étais trompé dans l’import, c’est pas Output mais InputStream…
Si ça ne marche tjrs pas reposte ton source.[/quote]
putain ca marche je t’aime ^^
Bussiere

Pas de problème :stuck_out_tongue:
Mais si tu veux éviter ce genre de prenage de tête je te conseille réellement d’utiliser un IDE digne de ce nom, eclipse ou netbeans (eclipse est vraiment top).

[quote=« pom2pin, post:12, topic: 27128 »]Pas de problème :stuck_out_tongue:
Mais si tu veux éviter ce genre de prenage de tête je te conseille réellement d’utiliser un IDE digne de ce nom, eclipse ou netbeans (eclipse est vraiment top).[/quote]
chuis sur eclipse :stuck_out_tongue:
j’apprends
Bussiere

Généralement dans ces cas là c’est souligné en rouge et à gauche il y a une petite icone rouge avec une croix si mon souvenir est bon. Tu clic dessus une fois et il te propose des choses, comme par exemple de rajouter l’import manquant. Ca permet aussi plein d’autres trucs de folies super utiles et généralement manquants dans les autres IDE.

merchi de ton aide en tout cas
Bussiere

merci d’utiliser le tag CODEBOX pour ce genre de messages bussiere… Edit les tiens, j’ai pas le courage de tout changer. :stuck_out_tongue: