2017-02-17 2 views
1

Ich bin ziemlich neu in der Verwendung von RegEx, um Informationen aus XML-Dateien zu erhalten. Ich versuche, die wichtigsten Informationen aus jedem Abschnitt zu erhalten in einem Array angezeigt werden, sondern kann es nicht herausgefunden. Ich würde jede mögliche Hilfe dafür schätzen.Könnte mir jemand mit diesem RegEx-Problem helfen?

Ich glaube, ich habe jeden Abschnitt geteilt, die Ich mag würde von Informationen zurückzukehren, aber ich bin nicht sicher, wie man dies, um alle zusammen zu stellen, die resultierende Anordnung in einer Tabelle anzuzeigen.

Die XML kann ich bin mit hier: National Roads Wetterstation Daten http://data.tii.ie/Datasets/Its/DatexII/WeatherData/Content.xml

Die RegEx, die ich für die Teile angelegt haben ich verwenden möchte, sind:

Chaussee ID

(NRA\d+) 

Datum & Zeit

(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}) 

Lufttemperatur

<airTemperature>(\d{1,2}.\d{1})<\/airTemperature> 

Windrichtung

<windDirectionCompass>(\w+)<\/windDirectionCompass> 

Windgeschwindigkeit

<windSpeed>(\d{1,3}.\d{1})<\/windSpeed> 

Straße Temperatur

<roadSurfaceTemperature>(\d{1,3}.\d{1})<\/roadSurfaceTemperature> 

Wenn jemand könnte mir zeigen, wie das ich schätze, es würde funktionieren würde wirklich, wie ich meine Programmierkenntnisse versuchen in neue Bereiche zu entwickeln. Vielen Dank!

+8

Warum verwenden Sie keine XML-Parser? https://www.w3schools.com/Php/php_xml_simplexml_read.asp –

+0

@ChinLeung Als ich dies recht neu bin habe ich viel zu lernen und zu entdecken! Ich werde mir das ansehen, danke! – Ryan

+1

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags?rq=1 – AbraCadaver

Antwort

0

Ja als @Chin Leung ein XML-Parser wies darauf hin, wäre der beste Weg, dies zu handhaben.

Hier ist ein Weg, dies umgehen kann:

$xml = file_get_contents('http://data.tii.ie/Datasets/Its/DatexII/WeatherData/Content.xml'); 
     $xml_object = simplexml_load_string($xml); 
     $publication = $xml_object->payloadPublication; 
     $siteMeasurements = $publication->siteMeasurements; 
     foreach($siteMeasurements as $siteMeasurement) 
     { 
      $road_id = str_replace('NRA', '', $siteMeasurement->measurementSiteReference); 
      etc.. 
     } 

mit http://us2.php.net/manual/en/function.simplexml-load-string.php

und http://us2.php.net/manual/en/function.file-get-contents.php

Verwandte Themen