praetorian1607 Geschrieben 4. September 2010 Geschrieben 4. September 2010 Hallo zusammen, Mein Chef hat mir letztens eine kleine Aufgabe gegeben, aber ich hänge gerade ein wenig fest. Auf einem Webserver liegt eine XML - Datei, die Temperaturwerte von Sensoren in unserem Serverraum enthält. Das Script soll die Werte auslesen und eine Warnung ausgeben wenn eine bestimmte Temperatur überschritten wird. Hört sich ja erstmal garnicht so schwierig an. Mein Problem besteht allerdings darin die richtigen Werte aus der XML Datei auszulesen. Mein Chef meinte das ginge über regular expressions, allerdings habe ich davon nicht wirklich viel Ahnung. Auch nicht wie das Parsen einer Datei genau funktioniert. Hat vielleicht ein guter Programmierer hier ein paar Ideen wie man das umsetzen könnte oder eine kleine Erklärung zum Parsen einer Datei? Bitte keinen Code denken will ich noch allein ;-) MFG praetorian Zitieren
flashpixx Geschrieben 4. September 2010 Geschrieben 4. September 2010 Warum hast Du Deine Frage nicht im passenden Linuxforum gepostet? Dahin würde sie gehören. Ich würde Dir davon abraten mit regulären Ausdrücken zu arbeiten, das kann später kein Mensch mehr lesen. Da Du eine XML Datei hast, bietet sich an die Datei je nachdem was Du als Ziel damit vorhast, das ganze zu transformieren bzw. die Daten direkt abzufragen. Zum Transformieren kannst Du XSL Transformation ? Wikipedia verwenden und zum direkten Daten extrahieren XQuery ? Wikipedia Als Programm kannst Du z.B. Saxon (Software) ? Wikipedia verwenden. Ich würde, da Du eine entsprechende Überwachung realisieren willst, ein Bashscript schreiben, das die Datei vom Server lädt, die Daten aus dem XML via XSLT in ein Flatfile transformiert und einlesen. Ändert sich das XML Format musst Du nur Deine XSLT anpassen. Weiterhin würde ich das dann in Nagios einbinden, damit Du auch direkt eine passende Benachrichtigung bekommst und die Überwachung durch Nagios gesteuert wird Zitieren
lilith2k3 Geschrieben 5. September 2010 Geschrieben 5. September 2010 Wieso Linux? Aber sei's drum. Da gibt's verschiedene Herangehensweisen: Noch simpler als irgendwelche XSL-Transformationen fände ich ein kleines C#/Mono-Programm, wo Du einfach ein XML-Dokument mit XDocument.Load() einlesen kannst, und dann kannst Du per LINQ selektieren, was Du brauchst. Hört sich kompliziert an, ist aber easy. Für das reine Parsen böte sich auch einfach auch nur ein grep/findstr (bash/powershell) an. RegExes wären ebenfalls eine Möglichkeit. <TagName>([^<]+) sucht nach allen Ausdrücken, die mit dem entsprechenden TagNamen beginnen. Von diesen Ausdrücken wird der Teil innerhalb der Runden Klammern benötigt. Das sind alle Zeichen, die nicht der spitzen Klammer/Kleinerzeichen entsprechen. RegExes können schwer zu lesen sein - in dem Falle aber eher nicht. Deiner Phantasie sind keine Grenzen gesetzt Zitieren
Sardoan Geschrieben 6. September 2010 Geschrieben 6. September 2010 Ja, über RegEx kann man sich streiten, die einen lieben es, die anderen hassen es. Ich finde, dass es ein gutes Werkzeug ist. Ok, meine alten RegEx mit Perl raffe ich auch nicht mehr, aber nur, weil ich keine vernünftige Dokumentation dazu hatte. Mein letzter Dozent hat die Dinger auch gehasst, aber mein momentaner Cheff findet die Dinger sehr sinnvoll. Also falls du RegEx benutzt, dann kann ich dir nur raten das Zeug gut zu dokumentieren. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.