2009-08-27 9 views
0

J'essaie de mettre à jour une série de fichiers XML en changeant les noms qu'ils référencent. J'ai une table de noms qui ont changé, une colonne pour le nom actuel et une colonne pour le nom à remplacer. J'ai cherché des moyens de rechercher un script, de le remplacer et de trouver sed. Cela semblait être un bon choix jusqu'à ce que je lance mon premier essai. Lors de l'inspection du fichier, j'ai trouvé plusieurs caractères non reconnus entre chaque retour chariot et saut de ligne. J'ai fait quelques recherches et j'ai trouvé qu'il y avait des problèmes avec sed utilisé sur les fichiers utf-16.Quel est le moyen le plus facile de rechercher et de remplacer dans les fichiers texte encodés UTF-16?

Ce sont des fichiers texte que je recherche, bien qu'il existe des copies stockées dans une table SQL Server dans une colonne de type xml. Lors de la mise à jour ou du remplissage de la base de données, les champs sont toujours définis comme ColumnName = N'xmltext '.

Je suis intéressé par la façon dont je pourrais également mettre à jour ces champs, bien que la question principale soit la meilleure façon de mettre à jour les fichiers texte.

Je suis en utilisant des expressions régulières étendues, ma recherche est pour ([>\\.])OldName([<\\.]) et je le remplacer par \1NewName\2

Répondre

0

Vous devrez probablement charger les fichiers XML dans un analyseur XML réel et ensuite utiliser XPath et/ou XQuery pour localiser les éléments qui contiennent la valeur de nom que vous recherchez. Une fois que vous connaissez le (s) élément (s) spécifique (s), vous pouvez simplement leur attribuer directement la nouvelle valeur, puis réenregistrer le XML dans le fichier. En ce qui concerne SQL Server, son type de données XML prend en charge nativement les instructions XPath et XQuery pour la recherche et la mise à jour des données d'éléments. Vous pouvez donc probablement utiliser les mêmes instructions XPath/XQuery dans les deux situations.

Questions connexes