OVH Cloud OVH Cloud

Caractère Valide pour XML

2 réponses
Avatar
EJL
Bonjour à toutes et à tous,

Voici mon petit problème : Comment faire pour rendre une chaîne de
caractère valide au sene XML ?

Mon texte peut contenir des caractères de contrôle de style "^R"
(). Lorsque je génère le fichier XML, ce caractère se retrouve
dans la valuer d'une balise, ce qui provoque une erreur "Caractère non
vide" lors du parse de mon document. Cela est normal, a priori, puisque
XML n'accepte pas ces types de caractères.
Il faut donc que je les supprime de ma chaîne avant de génèrer mon fichier.

Mais quelle est la solution la plus efficace pour faire cela ?
Comment connaître la liste de tous les caractères autorisés ou non (par
programmation) ?


Merci de votre aide,

Elisabeth
Toulouse

2 réponses

Avatar
Gabriel
EJL wrote:
Bonjour à toutes et à tous,

Voici mon petit problème : Comment faire pour rendre une chaîne de
caractère valide au sene XML ?

Mon texte peut contenir des caractères de contrôle de style "^R"
(). Lorsque je génère le fichier XML, ce caractère se retrouve
dans la valuer d'une balise, ce qui provoque une erreur "Caractère non
vide" lors du parse de mon document. Cela est normal, a priori, puisque
XML n'accepte pas ces types de caractères.
Il faut donc que je les supprime de ma chaîne avant de génèrer mon fichier.

Mais quelle est la solution la plus efficace pour faire cela ?
Voilà une proposition :

Tu définis l'encodage de ton fichier XML en UTF-8
tu ne mets que les valeurs sous la forme .
Comment connaître la liste de tous les caractères autorisés ou non (par
programmation) ?
Voir la RFC définissant la version de XML que tu utilises (je ne l'ai

pas en tête désolé)



Merci de votre aide,
En espérant t'avoir un peu aidé, Bon we !

Elisabeth
Toulouse





--
--
email : on se découvre pour m'écrire :)

Avatar
Jean Bon
public class ValidXmlChars {

public static void main(String[] args) {

char[] chars = new char[] {'c', 0x12, 'u', 'c', 'o', 'u'};
java.nio.CharBuffer buf = java.nio.CharBuffer.allocate(chars.length);

for (int i = 0 ; i < chars.length; i++)
{
if (isValidXmlChar(chars[i]))
buf.put(chars[i]);
}

int len = buf.capacity()-buf.length();
System.err.println(">>>"+new String(buf.array(), 0, len)+"<<<");

}

private static boolean isValidXmlChar (char c)
{
if ((c <= 0xD7FF && c >= 0x20) ||
(c <= 0xFFFD && c >= 0xE000) ||
(c <= 0x10FFFF && c >= 0x10000) ||
c == 0x9 ||
c == 0xA ||
c == 0xD)
return true;
else
return false;
}
}

http://www.w3.org/TR/2004/REC-xml-20040204/#charsets

"EJL" wrote in message news:
Bonjour à toutes et à tous,

Voici mon petit problème : Comment faire pour rendre une chaîne de
caractère valide au sene XML ?

Mon texte peut contenir des caractères de contrôle de style "^R"
(&#012;). Lorsque je génère le fichier XML, ce caractère se retrouve
dans la valuer d'une balise, ce qui provoque une erreur "Caractère non
vide" lors du parse de mon document. Cela est normal, a priori, puisque
XML n'accepte pas ces types de caractères.
Il faut donc que je les supprime de ma chaîne avant de génèrer mon
fichier.


Mais quelle est la solution la plus efficace pour faire cela ?
Comment connaître la liste de tous les caractères autorisés ou non (par
programmation) ?


Merci de votre aide,

Elisabeth
Toulouse