2008-09-17 8 views
1

J'essaie de créer un fichier XML basé sur des champs de données d'une table et je souhaite que les noeuds soient nommés en fonction de la valeur d'un champ de la table. Le problème est que parfois les valeurs entrées dans cette colonne contiennent des espaces et d'autres caractères non autorisés dans les noms de nœuds.Code de nettoyage du nom de noeud XML

Quelqu'un a-t-il un code qui va nettoyer une chaîne transmise et rééquilibrer les caractères invalides avec du texte de remplacement afin qu'il puisse être inversé à l'autre extrémité et retrouver la valeur d'origine?

J'utilise .net (vb.net mais je peux lire/convertir C#)

Répondre

1

Il pourrait être plus facile si vous avez enregistré la valeur d'origine si elle était illégale comme un nom de noeud dans un attribut. Ensuite, vous ne vous inquiétez pas d'avoir une sorte de complexe de/vers la traduction.

+0

très bon conseil sur le stockage de la valeur d'origine – MikeScott8

1

En fait, j'irais même jusqu'à dire qu'à moins d'avoir un contrôle complet sur les données, aucun processus de traduction ne fonctionnerait jamais. Donc, en second lieu, stocker les données d'origine soit comme un attribut ou un nœud enfant.

+0

vous avez raison et nous avons fini par faire pas la traduction – MikeScott8

1

Vous n'avez pas dit dans votre message original quelle langue alors voici un motif regex qui devrait vous aider à démarrer. C'est RAPIDE, vous aurez donc besoin de le tester.

([^A-Za-z0-9])|(\s)|(\t+)|(\c+) 
+0

merci pour cette regex et je vais jouer avec elle et voir ce que je peux faire. – MikeScott8

+0

YW. J'ai fait un léger changement. Encore une fois, c'est rapide et je n'ai certainement pas testé. J'espère que ça va aider. – Chuck

+0

Je pense que regex fonctionnera probablement, mais comment envisagez-vous de faire la traduction en arrière? – EBGreen

Questions connexes