FlolZ
Messages postés5Date d'inscriptionmercredi 16 avril 2014StatutMembreDernière intervention17 avril 2014
-
16 avril 2014 à 15:20
Whismeril
Messages postés18599Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 septembre 2023
-
17 avril 2014 à 18:01
Bonjour,
Je travaille en ce moment sur la réécriture d'un fichier XML, de ce fait je doit en supprimer certaines parties. Pour cela je souhaiterais utiliser les regex. Je vous montre le code, ce sera plus explicite je pense.
Ici un bout d'exemple d'un fichier XML sur lequel je travail :
<GlobalResources> <StringResource id="responseLocked" value="This item is locked. You cannot change this answer."/> <StringResource id="doYouMean" value="Do you mean '%1' ?"/> <StringResource id="outOfTime" value="The allowed time has expired. You cannot change this answer."/> <StringResource id="outOfTries" value="The allowed number of tries has been reached. You cannot change this answer."/> <StringResource id="questionLocked" value="This question is locked."/> <StringResource id="scoreIsX" value="Score: %1%%"/> <StringResource id="scoreIsXOutOfX" value="Score: %1 out of %2"/> </GlobalResources>
Ce que je souhaiterais, c'est effacer l'ensemble des caractères présent entre les balises <GlobalResources></GlobalResources>(balises comprises). Le problème que j'ai dans la rédaction de ma regex, c'est que j'arrive à faire ce que je veux, seulement lorsque le code est en ligne, mais dés que je le remet à sa forme initial(avec les sauts à la ligne etc...), rien ne ce passe.
Voici ma regex :
Regex objRegExp = new Regex("<GlobalResources>(.*?)</GlobalResources>"); fileWrite.WriteLine(objRegExp.Replace(line, String.Empty));
Donc ma question serait plutôt, comment prendre en compte les retours à la ligne dans une regex ?
J'ai tenté plusieurs solutions avec ce que j'ai trouvé sur le net, mais impossible d'avoir le rendu souhaité. Si l'un d'entre vous pouvait m'éclairer, cela m'aiderai grandement.
Whismeril
Messages postés18599Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention20 septembre 2023629 16 avril 2014 à 18:04
Bonsoir,
ici un code source qui te permets de tester tes regex.
Par contre, je ne suis pas sûr que tu t'y prennes bien, il y a pleins de bon outils pour parser et serialiser des fichiers xml.
Il te suffit de parser ton fichier et de le serialiser sans la données que tu souhaites enlever.
Voir ici ou là pour des exemples en Linq To Xml
jordane45
Messages postés37712Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention20 septembre 2023342 16 avril 2014 à 15:27
Bonjour,
Et comme ceci ?
Regex objRegExp = new Regex("<GlobalResources>(.*?)</GlobalResources>",RegexOptions.Singleline);
FlolZ
Messages postés5Date d'inscriptionmercredi 16 avril 2014StatutMembreDernière intervention17 avril 2014 17 avril 2014 à 09:06
Bonjour,
tout d'abord, merci de ta réponse. Je vais allez jeter un oeil sur les liens que tu me proposes et je reviens vers vous si j'ai réussi à résoudre mon problème. Bonne journée !
Merci encore une fois de ton aide Whismeril. En fait j'ai réussi à faire ce que je voulais en me simplifiant environ 1000 fois la vie ! J'ai vu qu'il été possible d'utiliser XDocument ou XElement. Pour ma part j'ai opté pour XDocument, sans vraiment savoir pourquoi, tant que ça marche. Je me suis aidé de ces liens: