Thread Strings ersetzen in Datei: .. mit Werten aus einer anderen Datei (2 answers)
Opened by plutos at 2005-08-23 18:09

plutos
 2005-08-23 18:09
#57356 #57356
User since
2005-08-23
1 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich bin Anfänger in Sachen Perl und habe folgendes Problem.
Ich möchte aus einer XML-Template-Datei eine neue XML-Datei erzeugen,
indem bestimmte Strings (NAME,TITEL,AUFRUF) ersetzt werden; die Werte
dazu befinden sich sich in einer anderen Datei (CSV-Format).

Datei template.xml:
...
Code: (dl )
1
2
3
4
5
6
<JOBS ... name="NAME">
...
     <Title>TITEL</Title>
...
     <MSCRI><![CDATA[AUFRUF
...


Datei jobs.csv:
Job A;Backup-Job;backup.sh
Job B;Loesch-Job;delete.sh
Job C;Kopier-Job;copy.sh


Hier mein letzter Skript-Versuch:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/perl -w
use strict;
my $XML = 'template.xml';
my $CSV = 'jobs.csv';
my $OUT = 'neudatei.xml';

open(READ1, "$XML")
open(READ2, "$CSV")
open(WRITE1, "> $OUT")

my @datei = <READ1>;

while (my $i = <READ2>)
{
 my @a = split(/;/,$i);  # CSV-Zeilen splitten
   my $name = "$a[0]";
   my $titel = "$a[1]";
   my $aufruf = "$a[2]";
   chomp $aufruf;
   foreach(@datei)
   {
     $_ =~ s/NAME/$name/;
     $_ =~ s/TITEL/$titel/;
     $_ =~ s/AUFRUF/$aufruf/;
     print WRITE1; }
}
close(READ1);
close(READ2);
close(WRITE1)
 or die "Fehler beim Schliessen von '$OUT': $! \n";


so sieht die generierte Datei neudatei.xml aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...
<JOBS ... name="Job A">
...
     <Title>Backup-Job</Title>
...
     <MSCRI><![CDATA[backup.sh
...
...
<JOBS ... name="Job A">
...
     <Title>Backup-Job</Title>
...
     <MSCRI><![CDATA[backup.sh
...
...
<JOBS ... name="Job A">
...
     <Title>Backup-Job</Title>
...
     <MSCRI><![CDATA[backup.sh
...


und so sollte sie aussehen:
...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<JOBS ... name="Job A">
...
     <Title>Backup-Job</Title>
...
     <MSCRI><![CDATA[backup.sh
...
...
<JOBS ... name="Job B">
...
     <Title>Loesch-Job</Title>
...
     <MSCRI><![CDATA[delete.sh
...
...
<JOBS ... name="Job C">
...
     <Title>Kopier-Job</Title>
...
     <MSCRI><![CDATA[copy.sh
...



Irgendwie kriege ich das nicht hin.
Wäre super wenn ihr mir weiterhelfen könnt.

Klaus

edit pq: code-tags hinzugefügt\n\n

<!--EDIT|pq|1124822107-->

View full thread Strings ersetzen in Datei: .. mit Werten aus einer anderen Datei