PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell Script XML Dateien



georgf.d
25-06-2008, 11:21
Hi @all,

ich beschäftige mich seit kurzem mit dem Shell Scripting, da man als Linux Anwender auf jeden fall ein gewisses Know How haben sollte.
Ich habe vor eine Auto Whitelisting Funktion in meinen Spamfilter einzubauen, habe allerdings das Problem, dass ich die Adressen zwar auslesen kann und eine Adressliste erhalte, allerdings weiß ich noch nicht genau wie man die Adressen in die Config XML Datei einpflegen kann...

hier einmal der Ausschnitt wo die daten eingefügt werden sollen.


<?xml version="1.0" encoding="UTF-8"?>
<properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="config_schema.xsd">
<property>
...

<property>
<name>subject</name>
<properties>
<property>
<name>__meta</name>
<properties>
<property>
<name>overlay</name>
<link>
<element>default</element>
<element>anti spam</element>
<element>features</element>
<element>lists</element>
<element>white</element>
<element>subject</element>
</link>
</property>
</properties>
</property>
<property>
<name>members</name>
<properties>
<property>
<name>__meta</name>
<properties>
<property>
<name>overlay</name>
<link>
<element>default</element>
<element>anti spam</element>
<element>features</element>
<element>lists</element>
<element>white</element>
<element>subject</element>
<element>members</element>
</link>
</property>
</properties>
</property>
<property>
<name>1213783761727_0</name>
<string>Emailadresse1@firma.de</string>
</property>
<property>
<name>subject</name>
<properties>
<property>
<name>__meta</name>
<properties>
<property>
<name>overlay</name>
<link>
<element>default</element>
<element>anti spam</element>
<element>features</element>
<element>lists</element>
<element>white</element>
<element>subject</element>
</link>
</property>
</properties>
</property>
<property>
<name>members</name>
<properties>
<property>
<name>__meta</name>
<properties>
<property>
<name>overlay</name>
<link>
<element>default</element>
<element>anti spam</element>
<element>features</element>
<element>lists</element>
<element>white</element>
<element>subject</element>
<element>members</element>
</link>
</property>
</properties>
</property>
<property>
<name>1213783761727_1</name>
<string>Kunde4@firma.de</string>
</property>



Also die weiteren einträge sollten hinter den Kunde4@firma.de einträg eingefügt werden, wisst Ihr wie man mit Shellscripting mitteln dort zeilen einfügen kann, und wenn möglich auch noch direkt nach duplikaten zwischen Bestehenden Daten und neuen daten suchen kann. Das Problem ist, dasss nicht nur die Whitelist Einträge in der XML-Datei stehen sonder auch die Blacklist einträge, deswegen muss das ganze an der richtigen stelle passieren.

Ich bin in Programmiersachen unterdurchschnittlich "normal" :rolleyes:, bin aber sehr lernfähig.

Vielen Dank im vorraus

Georgf.d

jan61
25-06-2008, 18:43
Moin,

da würde ich Dir lieber Perl empfehlen, da hast Du Module zur Verfügung, mit denen Du das XML parsen und damit auch die richtige Stelle finden kannst. Sehr einfach geht das z. B. mit XML::Parser::PerlSAX, Schreiben dann z. B. mit XML::Writer. Von einem selbstgestickten Pseudoparser würde ich eher abraten.

Jan

peschmae
25-06-2008, 19:51
Ich hab für solche Aufgaben schon xmlstarlet (http://xmlstar.sourceforge.net/) verwendet. Ging ganz gut - aber hab nicht viel mehr damit gemacht als etwas Daten von GThumb zu extrahieren...

So à la:


GTHUMB_PLACE=$(gunzip -c $INPUT_XML | xmlstarlet select -T -t -v '//Place')


für ein ge-gzipptes XML file mit sowas drinne:


<?xml version="1.0"?>
<Comment format="2.0"><Place>auf mrunix.de</Place><Time>1201970820</Time><Note></Note><Keywords>Nix schlusselwort</Keywords></Comment>


Aber ab einer gewissen Komplexität würde ich auch eher ne fettere Scriptsprache nehmen. :)

MfG Peschmä

georgf.d
30-06-2008, 13:44
hi Leute,

danke für die Infos, habe das ganze soweit zum laufen bekommen... THX

Mfg Gfd