Meldungen in XML nach Kriterien selektieren
jo73
- php
0 Frank (no reg)0 jo73
Hallo zusammen,
eine kleine Detailfrage zum Thema XML auslesen.
Ich möchte aus auf einem Server bereitgestellen Dokumenten nur Meldungen auf meiner Website darstellen, die unter <codes codetype="thema" nur T/AAA oder T/DDD enthalten.
Hierzu ein Beispiel einer Meldung in XML:
</ElementType>
<ElementType name="version" content="textOnly" model="closed" dt:type="number" />
<ElementType name="uniqueid" content="textOnly" model="closed" dt:type="string" />
<ElementType name="titel" content="textOnly" model="closed" dt:type="string" />
<ElementType name="codes" content="mixed" model="closed">
<AttributeType name="codetype" dt:type="enumeration" dt:values="region land thema" />
<attribute type="codetype" required="yes" />
</ElementType>
<version>1.0</version>
<uniqueid>1234567</uniqueid>
<titel>bla, bla</titel>
<codes codetype="region">D/EU,US/AM,R/AS,K/AF</codes>
<codes codetype="land">D/DEU,E/ENG,O/OEST</codes>
<codes codetype="thema">T/AAA,T/BBB,T/CCC,T/DDD,I/FFF</codes>
So, nun stelle ich derzeit alle Meldungen wie folgt dar, was auch funktioniert:
if(!preg_match('/<titel>(.+?)<\/titel>/is',$xml,$arr)) continue;
$time = $arr[1];
Wie gesagt möchte ich nun aber weiter einschränken und nur die Meldungen darstellen, welche den codetype thema und hier nur T/AAA und T/DDD haben.
Hier genau habe ich das Problem, um die drei genannten Begriffe wie bereits oben geschildert zu selektieren.
Ich hoffe Ihr könnt mir bei dieser Fragestellung weiterhelfen.
Schon vorab vielen Dank.
Gruß
Jo
Hi,
beschäftige dich doch mal mit der Verarbeitung von XML durch geeignete Bibliotheken. DOM, SAX, XPATH mal als Stichworte willkürlich in den Raum geworfen. "SimpleXml" schneit mir da grad noch so von der Seite ins Gedächtnis. Und das PHP Manual scheint auch ein paar Infos dazu zu haben.
Das sollte definitiv mehr (Erfolg) bringen, als so ein Rumgefrickel mit Regular Expressions.
Ciao, Frank
...mal angenommen ich würde ein "Rumgefrickel" mit Regular Expressions durchführen wollen, ist dann das folgende Script richtig, um sowohl T/AAA oder/und T/DDD unter vielen anderen "Thema-codes" korrekt auslesen zu können, oder bricht dieser Script irgendwo ab?
if(!preg_match('/<codes codetype="thema">(.*?)(T\/AAA|T\/DDD)(.*?)<\/codes>/is',$xml,$arr)) continue;
$time = $arr[1];
Danke für die Rückinfo.
Jo
Hi,
beschäftige dich doch mal mit der Verarbeitung von XML durch geeignete Bibliotheken. DOM, SAX, XPATH mal als Stichworte willkürlich in den Raum geworfen. "SimpleXml" schneit mir da grad noch so von der Seite ins Gedächtnis. Und das PHP Manual scheint auch ein paar Infos dazu zu haben.
Das sollte definitiv mehr (Erfolg) bringen, als so ein Rumgefrickel mit Regular Expressions.Ciao, Frank
if(!preg_match('/<codes codetype="thema">(.*?)(T\/AAA|T\/DDD)(.*?)<\/codes>/is',$xml,$arr)) continue;
$time = $arr[1];
...mal angenommen ich würde ein "Rumgefrickel" mit Regular Expressions durchführen wollen, ist dann das folgende Script richtig, um sowohl T/AAA oder/und T/DDD unter vielen anderen "Thema-codes" korrekt auslesen zu können, oder bricht dieser Script irgendwo ab?
Gegenfrage(n):
Ciao, Frank