novabyte 0 Geschrieben 5. Januar 2016 Melden Teilen Geschrieben 5. Januar 2016 (bearbeitet) 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.statusfrom D:\test\data.xmlgroup by /row/col Ich hoffe auf eure Hilfe! :) files.zip bearbeitet 5. Januar 2016 von novabyte Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.