Eviter certaines chaines de carateres dans une expression reguliere

Résolu
sh4gm4
Messages postés
47
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
2 octobre 2008
- 8 sept. 2008 à 12:55
nickadele
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013
- 12 sept. 2008 à 19:29
Salut,

je cherche a remlplacer dans un fichier xml toute balise <truc> ou </truc>
qui ne soit pas une des balise que je spécifie, le problème est que je ne trouve pas comment faire.
j'en suis la mais ce ne marche pas:

<([^(seg|/seg|prop|/prop|head|/head|tu|/tu|body|/body|tmx|/tmx|note|/note|ude|/ude|map|/map|\?|!)][^>]*>)
mais en fait cela corespond a une recherche sur chaque carractere ...

Quelqu'un sait comment eviter les chaines ?
MERCI !!
V.

-------------------------------------------------------------------
Diaboliser quelqu'un ne lui fait pas pousser les cornes et la queue...

6 réponses

sh4gm4
Messages postés
47
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
2 octobre 2008

12 sept. 2008 à 15:01
Merci Nick,

J'avais trouvé ma reponse !
mais impossible de se connecter sur CFM...
a la base ce post etait sur le bar juste avant la MAJ de codes-sources
J'ai fait un post a ce sujet
http://www.codes-sources.com/forum/sujet-IMPOSSIBLE-CONNECTER-SUR-CFM-DONC-REPONDRE-SOLUTION-QUESTION_1200556.aspx
et un poste pour toi :
http://www.codes-sources.com/forum/sujet-MESSAGE-NICKADELE_1201218.aspx

et maintenant je peux mettre ma reponse !
<((?!/?seg|/?prop|/?tu|/?body|/?head|/?tmx|/?note|/?ude|/?map|\\?|!)[^>]*>)
remplacé par &gt;$1
cela chope donc toute balise de mon XML qui n'est pas contenue dans mon expression et la remplace par elle même avec le < sous forme HTML &gt;

(Et je dev en C# mais ma regexp est indépendante du C#)

Encore Merci

-------------------------------------------------------------------
Diaboliser quelqu'un ne lui fait pas pousser les cornes et la queue...
3
nickadele
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

9 sept. 2008 à 17:49
Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Mon Blog
0
nickadele
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

9 sept. 2008 à 17:51
Sorry mon message n'était pas passé !
Je disais :

si je comprend bien, tu veux travailler par exception ?
Pourquoi, si tu sais ce que tu dois remplacer ?

Nickadele
0
nickadele
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

11 sept. 2008 à 22:47
Voilà je t'ai concocté un début de solution, c'est une fonction qui te renvoie le nom des éléments différents du filtre, après il te reste a supprimer les éléments du xml, tu disposes de leurs noms :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns= "http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Renvoi une structure des éléments d'un XML différents du filtre</title>
</head>



<cffunction name="getRootElement" access="public" returntype="string" hint="Given a complete XML object, returns the root element object.">
    <cfargument name="passedXMLElement">
 <cfif isXMLRoot( evaluate( 'arguments.passedXMLElement.#structKeyList( arguments.passedXMLElement )#' ) )>
  <cfreturn evaluate( 'arguments.passedXMLElement.#structKeyList( arguments.passedXMLElement )#' )>
 </cfif>
</cffunction>
<!--Renvoi une structure des éléments d'un XML différents du filtre-->
<cffunction name="recurseXMLObject" access="public" returntype="struct" hint="Renvoi une structure des éléments différents du filtre.">
 <cfargument name="passedXMLElement">
 <cfargument name="elementNameFilterList"  required="yes">
 <cfparam name="resultStruct" default="#StructNew()#">
 
 <cfset strElement = ""/>
    <cfif isDefined( 'passedXMLElement.xmlName' )>
  <cfif ( not listFindNoCase( arguments.elementNameFilterList, arguments.passedXMLElement.xmlName ) )>
   <cfset strElement = arguments.passedXMLElement.xmlName />
   <cfset StructInsert(resultStruct, strElement, strElement, True)/>
  </cfif>
 </cfif>
    <cfif isDefined( "passedXMLElement.xmlChildren" ) and isArray( passedXMLElement.xmlChildren ) and arrayLen( passedXMLElement.xmlChildren )>
     <cfset passedXMLElementChildCount = arrayLen( passedXMLElement.xmlChildren )>
        <cfloop index="thisChildElement" from="1" to="#passedXMLElementChildCount#">
         <cfset recurseXMLObject( passedXMLElement.xmlChildren[thisChildElement], arguments.elementNameFilterList )>
  </cfloop>
    </cfif>
 <cfreturn resultStruct>
</cffunction>




<cfxml variable="myXML">
<segs>
 
  <head>Hayden Panettiere</head>
   Blonde
 

 
  <head>Christina Cox</head>
  Blonde
 

 
  <head>Winona Ryder</head>
  Brunette
 

 
  <head>Minnie Driver</head>
  Brunette
 

 
  <head>Julia Stiles</head>
  Blonde
  <test>Brunette</test>
 

</segs>
</cfxml>


<cfdump var ="#myXML#" label="myXML XML DOM"/>
<cfset parsedXML = xmlParse( myXML )>
<cfset xmlStruct = recurseXMLObject( getRootElement(parsedXML) , "prop,head" )>
<cfset xmlArray = StructKeyArray(xmlStruct)/>
<cfdump var="#xmlArray#"/>



</html>

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
Mon Blog
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sh4gm4
Messages postés
47
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
2 octobre 2008

12 sept. 2008 à 15:08
question : le code codefusion c'est du XML ??
ca y ressemble beaucoup...
ou peut etre est-ce une sorte de XSLT spécial CFM ?

-------------------------------------------------------------------
Diaboliser quelqu'un ne lui fait pas pousser les cornes et la queue...
0
nickadele
Messages postés
1251
Date d'inscription
mercredi 7 août 2002
Statut
Modérateur
Dernière intervention
10 avril 2013

12 sept. 2008 à 19:29
Oui en quelques sortes c'est comme du xml, si ce n'est que le xml impose certaines règles de format comme les accents etc...
De plus tu n'arriveras pas à le parser !
Par contre Flex est sous forme xml.
Tu peux également définir tes forms XML sous la forme xml
Exemple tiré de l'aide !
Mon Blog
0