Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : eviter certaines chaines de carateres dans une expression reguliere [ Base de données / XML ] (sh4gm4)

lundi 8 septembre 2008 à 12:55:27 | eviter certaines chaines de carateres dans une expression reguliere

sh4gm4

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...

mardi 9 septembre 2008 à 17:49:07 | Re : eviter certaines chaines de carateres dans une expression reguliere

nickadele

Membre Club Administrateur CodeS-SourceS


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

mardi 9 septembre 2008 à 17:51:08 | Re : eviter certaines chaines de carateres dans une expression reguliere

nickadele

Membre Club Administrateur CodeS-SourceS
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

jeudi 11 septembre 2008 à 22:47:56 | Re : eviter certaines chaines de carateres dans une expression reguliere

nickadele

Membre Club Administrateur CodeS-SourceS

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" " [ Lien ]">
<html xmlns=" [ Lien ]">
<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>

<body>
<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>
 <prop id="1">
  <head>Hayden Panettiere</head>
  <body>Blonde</body>
 </prop>
 <prop id="2">
  <head>Christina Cox</head>
  <body>Blonde</body>
 </prop>
 <prop id="3">
  <head>Winona Ryder</head>
  <body>Brunette</body>
 </prop>
 <prop id="4">
  <head>Minnie Driver</head>
  <body>Brunette</body>
 </prop>
 <prop id="5">
  <head>Julia Stiles</head>
  <body>Blonde</body>
  <test>Brunette</test>
 </prop>
</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#"/>

</body>
</html>

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


vendredi 12 septembre 2008 à 15:01:43 | Re : eviter certaines chaines de carateres dans une expression reguliere

sh4gm4

Réponse acceptée !
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...

vendredi 12 septembre 2008 à 15:08:21 | Re : eviter certaines chaines de carateres dans une expression reguliere

sh4gm4

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...

vendredi 12 septembre 2008 à 19:29:22 | Re : eviter certaines chaines de carateres dans une expression reguliere

nickadele

Membre Club Administrateur CodeS-SourceS
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 !

CFML

<cfformgroup type="horizontal" label="Accept?">    <cfinput type = "Radio" name = "YesNo" value = "Yes" checked>    <cfinput type = "Radio" name = "YesNo" value = "No"> </cfformgroup> 

XML

<xf:group appearance="horizontal">    <xf:label>Accept?</xf:label>    <xf:extension/>    <xf:select1 appearance="full" bind="YesNo" id="YesNo">       <xf:extension>          <cf:attribute name="type">radio</cf:attribute>       </xf:extension>       <xf:choices>          <xf:item>             <xf:label>Yes</xf:label>             <xf:value>Yes</xf:value>             <xf:extension>                <cf:attribute name="checked">checked</cf:attribute>             </xf:extension>          </xf:item>          <xf:item>             <xf:label>No</xf:label>             <xf:value>No</xf:value>             <xf:extension/>          </xf:item>       </xf:choices>    </xf:select1> </xf:group> 


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



Cette discussion est classé dans : chaines, expression, carateres, eviter, reguliere


Répondre à ce message

Sujets en rapport avec ce message

Insert Expression [ par amedeeean ] Je cherche l'équivalent du clic droit - Insert Expression de HomeSite dans DreamWeaver ?L'Expression Builder quoi !Merci Expression régulière [ par Fabienduceps ] slt,J'ai un controle sur une date à effectuer (sur un cfinput de type datefield) mais le validate = "eurodate" ne semble pas fonctionner dans mon cas.


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.