2009-10-31 4 views
0

Si j'ai un fichier xml qui ressemble à ceci:modification d'un fichier xml

<?xml version="1.0" encoding="UTF-8"?> 
<installerDefaults pathToAllUsers="C:\ProgramData\prog"> 
    <databaseConnector> 
     <localDatabasePath>C:\ProgramData\prog\tracking.db3</localDatabasePath> 
    </databaseConnector> 
    <defaultLocales> 
     <installerDefaultLocale>en-US</installerDefaultLocale> 
    </defaultLocales> 
    <directories> 
     <languageDataBasePath>C:\ProgramData\prog\Content</languageDataBasePath> 
    </directories> 
</installerDefaults> 

Et je veux changer la chaîne « C: \ ProgramData \ prog » à autre chose dans les trois cas, comment Je le modifie donc je ne fais qu'un changement et ça change tous les trois? En fait, ce serait mieux si je pouvais juste changer le "prog" et garder tout le reste.

Je n'utilise aucune langue, je suis en train d'éditer le fichier dans un éditeur de texte. Peut-être que ce que je demande n'est pas possible. N'y a-t-il pas un moyen de concaténer les chaînes, pseudo-xml par ex.

s = "C:\ProgramData\abcdefg\" 

<installerDefaults pathToAllUsers = s> 
<localDatabasePath>s + "tracking.db3"</localDatabasePath> 
<languageDataBasePath>s + Content</languageDataBasePath> 

Ainsi, lorsque le programme qu'il lit dans les regards de la valeur de localDatabasePath, il get C: \ ProgramData \ abcdefg \ tracking.db3

Est-ce possible?

+0

quelle langue utilisez-vous? –

+0

vous n'avez fourni aucune information sur votre environnement. Ce genre de changement se prête à quelque chose comme 'sed' ou' perl' et utilise des expressions régulières pour trouver et changer les références que vous voulez – Jherico

Répondre

1

Tout dépend de la rigueur que vous voulez être. Un simple Rechercher/Remplacer dans n'importe quel éditeur de texte ferait l'affaire dans ce cas. Les langages de script de gestion de texte tels que sed ou perl vous permettraient de faire la même chose depuis la ligne de commande.

Le problème avec ces approches est qu'elles ne s'étendront pas facilement à des problèmes plus généraux. Pensez à changer

C:\ProgramData\directories\Content 

à

C:\ProgramData\wibble\Content 

il est trop facile aussi changer accidentellement la balise XML

<directories> 

aussi. En général, la transformation de XML nécessite des outils qui comprennent le langage XML.

Par conséquent, vous avez vraiment besoin de quelque chose qui comprend XML, et c'est là que XSLT pourrait être utilisé. Vous pouvez obtenir un processeur de ligne de commande à partir de here et il existe des tutoriels pour XSLT here. C'est beaucoup d'apprentissage, mais si vous essayez de développer des compétences, cela vous permet de résoudre des problèmes de manipulation XML plus complexes.

0

Jetez un coup d'œil aux entités XML; par exemple. comme illustré par this tutorial page

Entités vous permettent de définir une valeur ou une structure d'élément dans un endroit dans l'en-tête d'un fichier XML et l'utiliser à plusieurs points dans le corps. Un fichier XML peut également utiliser des entités définies ailleurs.

Questions connexes