begin process at 2010 09 03 08:46:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ColdFusion

 > 

Base de données

 > 

XML

 > 

eviter certaines chaines de carateres dans une expression reguliere


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

eviter certaines chaines de carateres dans une expression reguliere

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ée 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

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales