2010-02-18 5 views
0

Je dois supprimer le tag "image" avec regex.Suppression de la balise xml avec regex

Je travaille avec C# .Net

exemple <rrr><image from="91524" to="92505" /></rrr> devrait devenir:

<rrr></rrr> 

Toute personne ???

+0

Pourquoi avez-vous besoin d'utiliser regex? – Skilldrick

Répondre

8

Vous ne devriez pas vraiment utiliser regex pour cette tâche, surtout quand .NET fournit de tels outils puissants pour gérer XML:

XElement xml = XElement.Parse("<rrr><image from=\"91524\" to=\"92505\" /></rrr>"); 
xml.Descendants("image").Remove(); 

Toutefois, si vous insistez pour le faire cela avec regex, nous allons voir ce qui se passe:

string xml = "<rrr><image from=\"91524\" to=\"92505\" /></rrr>"; 
string output = Regex.Replace(xml, "<image.*?>", ""); 

Cette méthode a des problèmes bien que la première méthode permet de résoudre pour vous. Exemples de problèmes:

  • Ne gère pas la sensibilité à la casse.
  • > caractères dans les attributs peuvent perturber l'expression régulière.
  • Les nouvelles lignes ne seront pas appariées correctement.
  • Correspond incorrectement à d'autres balises qui commencent par une image comme <image2 />.
  • Les commentaires XML peuvent causer des problèmes.
  • Ne gère pas les deux <image /> et <image></image>.
  • etc ...

Certains d'entre eux sont faciles à corriger, certains sont plus difficiles. Mais à la fin, il ne vaut pas la peine de passer du temps à améliorer la solution d'expression régulière pour gérer tous les cas particuliers lorsque la solution LINQ to XML est si simple et fait tout cela pour vous.

0

Même si XML est très régulière et souffre d'une politique draconienne « valider ou mourir », this Stack Overflow question se révélera très instructif.

Les expressions régulières sont puissantes - mais les outils XML dans .NET sont meilleurs pour cette tâche, car ils sont conçus pour gérer ce genre de chose. Vous pouvez manipuler le code XML en fonction de sa structure, ce que les expressions régulières ne peuvent pas faire car elles considèrent votre code XML comme du texte.

XML est du texte, mais c'est du texte avec une structure particulière. Profitez de cette qualité connue.

Questions connexes