mastereur
Messages postés37Date d'inscriptionjeudi 17 mai 2007StatutMembreDernière intervention26 décembre 2010
-
17 avril 2009 à 16:36
mastereur
Messages postés37Date d'inscriptionjeudi 17 mai 2007StatutMembreDernière intervention26 décembre 2010
-
20 avril 2009 à 09:02
Bonjour,
Je souhaite charger un bout de XML vers une listview à 3 colonne (nom valeur description)
j'arrive à presque tt charger (vf image=> ligne en rouge) sauf l'option dans le layout.
Je n'arrive pas à trouver d'où ça peut venir et je suis presque sur que c'est quelque chose de tout bête.
Et le code:
string parentName, childName, childValue;
XmlTextReader fichierXml = new XmlTextReader(fichier);
XmlDocument doc = new XmlDocument();
doc.Load(fichier);
while (fichierXml.Read())
{
#region appender
/* on a trouvé un nouveau appender
*/
if (fichierXml.LocalName == "appender")
{
parentName = fichierXml.GetAttribute("name");
/* ici la fonction 'VerifItemSalrClientLog4net' cherche si l'appender
* est présent dans le fichier de configuration.
* si non, on l'ajoute est il sera mis en rouge
*/
if (!VerifItemSalrClientLog4net(parentName))
{
childValue = fichierXml.GetAttribute("type");
item[0] = parentName;
item[1] = childValue;
item[2] = "appender:" + parentName +
"|type";
liste.Items.Add(new ListViewItem(item));
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 17 avril 2009 à 18:15
Bonjour,
L'instruction Read sur un XmlTextReader est très basic, et par défaut elle retourne aussi les caracteres de fin de ligne entre 2 balises (on est en mode texte).
D'autre méthodes du XmlTextReader sont plus perspicasses.
Dans ton code, tous les "Read" sont dans une boucle "While" avec une série de tests pour savoir ce que tu as lu, les caracteres de fin de lignes ne te dérangent donc pas car tu les ignores simplement.
mais pour la balise <conversionPattern> tu fais un seul "Read", qui doit retourner un fin de ligne!!
il faudrait que tu fasses un 2eme read, ou une boucle while comme pour les autres.
(mets un point d'arret après le Read et regarde le contenu de fichierXml.LocalName)
Ou encore plus simple, tu peux parametrer les XmlTextReader pour qu'il ignore lui-même ces fin de lignes:
Ajoute ça apres l'initialisation de ton XmlTextReader:
fichierXml.WhitespaceHandling = WhitespaceHandling.None;
tu peux aussi enlever la déclaration du XmlDocument et son ouverture, qui ne servent a rien.
mastereur
Messages postés37Date d'inscriptionjeudi 17 mai 2007StatutMembreDernière intervention26 décembre 2010 20 avril 2009 à 09:02
Merci de ta réponse.
à la place du seul read, j'ai mis un while. Car sans, j'avais une ligne de trop ;
je suppose que ça lisais </layout> et donc me rajoutai une ligne de trop.