• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] xml-editor

Escho

Advanced Hacker
Gibt es einen xml-editor, den ihr empfehlen könnt, mit dem es möglich ist, mehrere xml-Dateien in einem Rutsch zun editieren?

Der Hintergrund ist folgender:

Ich habe Bildbeschreibungsdateien im xml-Format vorliegen (xyz.ufraw). Zu jedem mit ufraw decodierten Photo gehört eine dieser .ufraw-Dateien. Ich möchte nun zum Beispiel beim Weißabgleich-Tag statt 5700K für jedes Bild 6500K eingeben. Und damit ich das nicht für alle 500 Fotos einzeln machen muß, muß irgenwas wie eine Batch-Verarbeitung dafür herhalten

Sowas mit der Bash für diesen speziellen Fall zu programmieren ist nicht das größte aller Probleme. Nur, geht dass nicht etwas komfortabler und auch universeller mit einer schönen GUI?

Edgar
 
Als erstes würde ich mal bei Gimp nachgucken, das hat nämlich etliche Funktionen zum Skripten und für Stapelverarbeitung, auch wenn diese gut versteckt sind und eine merkwürdige Syntaks haben.
 

abgdf

Guru
Normales Editieren mach ich mit "kxmleditor".

Bei komplexeren Änderungen schreibe ich Python-Skripte, was aber bzgl. xml nicht so ganz einfach ist: Es gibt da mehrere Bibliotheken/Module (lxml, minidom usw.). Letztendlich muß man aber doch einzelne "Knoten" recht mühsam herausfiltern.
Kann mir nicht vorstellen, daß man sowas in bash mit vertretbarem Aufwand machen könnte.
 
OP
Escho

Escho

Advanced Hacker
kxmleditor hatte ich mir schon ergoogelt, das Programm aber für tot gehalten, unter anderem weil der entsprechende Link auf der OpenSuse- Seite ins Nirvana führt. Ich hab jetzt mal von Hand in den Repos für KDE3 gesucht und bin dort fündig geworden. Das ist ein nettes Programm, aber mit Batchbetieb hat es leider nicht am Hut.

Gimp ist so eine Sache. Das verwende ich nur im absoluten Notfall (die 8 Bit Farbtiefe pro Kanal ist mir zu wenig). Und an die Scripts dort hab ich mich noch nicht herangetraut.

Ich hab gestern abend ein bißchen mit der Bash gespielt und ein für meinen speziellen Anwendungzweck geeignetes kleines Skript erstellt, das tut, was ich will:

Code:
#/bin/bash

tag1="Temperature"
wert1="4444"

tag2="WB"
wert2="Manual WB"

quelle=`kdialog --caption "Verzeichnis auswählen" --getexistingdirectory ~/Photos`
if [ $? != 0 ]
then
      exit
fi

for bild in "$quelle"/*.ufraw
do
      name=`basename $bild .ufraw`
      cat $bild | sed -e "/<$tag1>/ c \ <$tag1>$wert1</$tag1>" -e "/<$tag2>/ c \ <$tag2>$wert2</$tag2>" > $quelle/"$name"_neu.ufraw
done

exit

Hier muß ich nur noch die gewünschte Farbtemperatur zur Variablen $wert1 zuweisen. Und dafür werd ich mir vielleicht noch mit kdialog eine Abfrage einbauen, wenn ich das Script öfter brauche (Im Moment ists ein Einzelfall, wie gesagt für 500 Photos)

Danke für eure Hinweise

Edgar
 
Oben