Jump to content

XML mit Logparser verwerten


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

ich kämpfe seid einiger Zeit mit der Auswertung von XML-Daten, und bekomme keine passende Lösung. Hoffentlich kann mir hier einer helfen!

Es geht um die Auswertung von virtuellen und physikalischen Hosts.

 

Meine XML-Datei sieht folgendermaßen aus:

 

<?xml version='1.0' encoding="UTF-8" standalone='yes'?>
<message>
<table name="server_table" >
<row><col col_name="Hostname" col_id="u.hostname" >p_host1</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host1</col>
<col col_name="status" col_id="u.status" >running</col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" >p_host1</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host2</col>
<col col_name="status" col_id="u.status" >running</col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" >p_host2</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host1</col>
<col col_name="status" col_id="u.status" >configured</col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" p_host2</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host2</col>
<col col_name="status" col_id="u.status" >configured</col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" >p_host2</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host3</col>
<col col_name="status" col_id="u.status" >running</col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" >p_host3</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" >v_host4</col>
<col col_name="status" col_id="u.status" ></col>
<col col_name="Server: data2" col_id="u.data2" >data2</col>
</row>
<row><col col_name="Hostname" col_id="u.hostname" >p_host4</col>
<col col_name="Server: data1" col_id="u.data1" >data1</col>
<col col_name="name" col_id="u.name" ></col>
<col col_name="status" col_id="u.status" ></col>
<col col_name="Server: data2" col_id="u.data2" ></col>
</row>
</table>
</message>

 

 

Als Endergebnis wünsch ich mir zwei Ausgaben:

1. Ausgabe in einer passenden Tabelle, wie:

  

u.hostname   u.name      u.status

------------ ------------ ------------

p_host1      v_host1     running

p_host1      v_host2     running

p_host2      v_host1     configured

p_host2      v_host2     configured

p_host2      v_host3     running

p_host3      v_host4

p_host4    

 

2. Die Ausgabe von "u.hostname" (physikalischer Host) auf der die gegebene "u.name" (virtueller Host) im Status ("u.status")  'running" ist.

Dies erledige ich dann durch dynamische Anpassung der SQL-Query - per Variable...

z.B. :

Eingabe: v_host1   Ausgabe: p_host1

Eingabe: v_host3   Ausgabe: p_host2

Eingabe: v_host4   Ausgabe: ' ' (leer)

 

Bisher habe ich eine Query, die der oben gezeigten Tabelle ansatzweise gleicht, aber ich komme nicht weiter...

 

- Meine Logparser-Kommandozeile lautet: logparser -i:XML -fNames:XPath -fMode:Auto -rootXPath:/message/table/row file:query.sql -o:datagrid

- Inhalt von query.sql:

select
  max(case 'u.hostname' when /row/col/@col_id THEN /row/col ELSE '' END) AS u.hostname,
  max(case 'u.name' when /row/col/@col_id THEN /row/col ELSE '' END) AS u.name,
  max(case 'u.status' when /row/col/@col_id THEN /row/col ELSE '' END) AS u.status
from D:\test\data.xml
group by /row/col

 

 

Ich hoffe auf eure Hilfe! :)

files.zip

bearbeitet von novabyte
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...