Bonjour, j'ai une méthode qui exécute une URL et qui en récupère le contenu généré au format XML (fichier PHP générant ce fichier).

Lorsqu'il y a le symbole "<" dans le contenu récupéré, l'application me sort une erreur "ParseException".

Voilà à quoi ressemble le code source XML récupéré lorsqu'il y a ce fameux symbole :
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
<?xml version='1.0' encoding='UTF-8'?><rules>
	<rule>
		<id>1</id>
		<name>rtg</name>
		<description>fut</description>
	</rule>
		<rule>
		<id>3</id>
		<name>aé!€</name>
		<description>aé!€</description>
	</rule>
		<rule>
		<id>16</id>
		<name><01234567890123456789012345678901234567890123456789012345678901234</name>
		<description>ztué,\') nkg¥~\\[§>{:}=|¹~#{[|`\^@]o:P)(%54

^¤¤</description>
	</rule>
	</rules>
Le caractère qui fait tout planter est le "<" (celui en rouge) du champs name de la rule 16.
Je précise qu'il s'agit de valeurs de test.

Voilà également la façon dont je récupère ce contenu :
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
 
public ArrayList<freeman.objects.Rules> parseRules(String url) throws MalformedURLException, IOException, NullPointerException, XmlPullParserException{
 
	ArrayList<freeman.objects.Rules> listeRules = null;
	XmlPullParser parser = Xml.newPullParser();
 
	try {
		// auto-detect the encoding from the stream
		parser.setInput(this.getInputStream(url), null);
		int eventType = parser.getEventType();
		freeman.objects.Rules currentRule = null;
		boolean done = false;
 
		while (eventType != XmlPullParser.END_DOCUMENT && !done){
			String name = null;
 
			switch (eventType){
 
				// Dans le cas où l'on commence le document XML
				case XmlPullParser.START_DOCUMENT:
					listeRules = new ArrayList<freeman.objects.Rules>();
				break;
 
				// Dans le cas où l'on commence une balise
				case XmlPullParser.START_TAG:
					name = parser.getName();
 
					if (name.equalsIgnoreCase(RULE)){
						currentRule = new freeman.objects.Rules();
					}else if(currentRule != null){
 
						if(name.equalsIgnoreCase(ID)){
					    	currentRule.setId(Integer.parseInt(parser.nextText()));
					    }else if (name.equalsIgnoreCase(NAME)){
					    	//currentRule.setName(String.valueOf(Html.fromHtml(parser.nextText())));
					    	currentRule.setName(parser.nextText());
					    }else if(name.equalsIgnoreCase(DESCRIPTION)){
					    	//currentRule.setDescription(String.valueOf(Html.fromHtml(parser.nextText())));
					    	currentRule.setDescription(parser.nextText());
					    } 
					}
				break;
 
				// Dans le cas où l'on termine une balise
				case XmlPullParser.END_TAG:
					name = parser.getName();
					if (name.equalsIgnoreCase(RULE) && currentRule != null){
						listeRules.add(currentRule);
					}else if (name.equalsIgnoreCase(RULES)){
						done = true;
					}
				break;
			}
 
			eventType = parser.next();
		}
	} catch (MalformedURLException e) {
		throw e;
	} catch (IOException e) {
		throw e;
	} catch (NullPointerException e) {
		throw e;
	} catch (XmlPullParserException e) {
		throw e;
	}
 
	return listeRules;
}
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
 
private InputStream getInputStream(String strUrl) throws MalformedURLException, IOException, NullPointerException {
 
	InputStream res=null; 
	try {
		URL url = new URL(strUrl);
		res = url.openConnection().getInputStream();
	} catch (MalformedURLException e) {
		throw e;
	} catch (IOException e) {
		throw e;
	}
 
	if (res == null){
		res = new ByteArrayInputStream("<rules></rules>".getBytes());
	}
	return res;
}
En me renseignant sur internet, j'ai vu un peu de tout, c'est à dire que je peux utiliser la méthode HTML.fromHTML() mais ça ne change rien.
J'ai également essayé en formatant tout les caractères spéciaux avec leur code HTML mais sans succès, du coup, je suis perdu..