Ich habe ein XML-Dokument (traffic.xml
), die ich dann verwendet, um nur 2 spezifische Attribute mit foreach ziehen, da es eine Tonne von ihnen in der ursprünglichen XML ist um ein PHP zu erstellen (drivetimeFetch.php
).Benötigen Sie PHP foreach zum Erstellen von XML-Elementen und Attributen mit einem zweiten XML
Was ich jetzt zu tun brauchen, mit drivetimeFetch.php
, ich brauche eine andere XML-Dokument erstellen (carousel_Traffic.xml
) mit Elementen und aus den 30 oder so Linien Attribute aus dem abgestreiften drivetimeFetch.php
ich herstellte. Hier bleibe ich stecken. Ich konnte die Elemente und Attribute schreiben, aber wie bekomme ich jede Zeile in einen eigenen Elementblock. Hier
ist, was meine php wie folgt aussieht:
<?php
$xml1 = new SimpleXMLElement(file_get_contents('https://wsidata.weather.com/201303/en-us/55828880/traffic.xml'));
foreach ($xml1->drivetimes->drivetime as $drivetime) {
echo"<br>";
echo $drivetime['pathName'].":"." ".$drivetime['driveTimeMinutes']."min \n" ;
}
$xml_txt = '<?xml version="1.0" encoding="UTF-8"?>'."\r\n".'<tickerfeed version="2.4">'."\r\n".
'<playlist type="scrolling_carousel" name="TrafficScroll" target="carousel">'."\r\n" ;
$element = '<element>';
$elementClose = '</element>';
$field1 = '<field name="05">';
$fieldClose = '</field>';
$playlistClose = '</playlist>';
$tickerfeedClose = '</tickerfeed>';
$f = fopen("C:\\Users\\Administrator\\Desktop\\carousel_Traffic.xml", "w");
fwrite ($f, $xml_txt. "\r\n");
fwrite ($f, $element. "\r\n");
fwrite ($f, $field1. $drivetime['pathName'].":"." ".$drivetime['driveTimeMinutes']."min " . $fieldClose. "\r\n");
fwrite ($f, $elementClose. "\r\n");
fwrite ($f, $playlistClose. "\r\n");
fwrite ($f, $tickerfeedClose. "\r\n");
fclose ($f);
?>
Was ich daraus müssen, ist zu bekommen, dass carousel_Traffic.xml aussehen, ist dies:
<?xml version="1.0" encoding="UTF-8"?>
<tickerfeed version="2.4">
<playlist type="scrolling_carousel" name="TrafficScroll" target="carousel">
<element>
<field name="05">I-278: Bklyn Battery Tunnel to Brooklyn Bridge: 10min </field>
</element>
</playlist>
</tickerfeed>
Für jede dieser Linien in der drivetimeFetch.php
, ich denke, das ist eine foreach-Operation, aber ich habe keine Ahnung, wie das zu tun, so dass die pathName
und driveTimeMinutes
für jede Zeile einen eigenen Element-Block bekommt. Wie Sie sehen können, habe ich es für nur eine Zeile arbeiten lassen.
Danke Parfait! Was ich dabei tat, war das Hinzufügen der foreach direkt nach dem ersten fwrite ($ f, $ xml_txt.) – RunawayPhish
Ich aktualisiert, um Ihre tatsächliche Ausgabe anzupassen. Überdenken Sie diese Lösung oder andere, die [DOM] (http://php.net/manual/en/class.domdocument.php) -Methoden verwenden ('createElement()', 'appendChild()' usw.). Verketten Sie keine Zeichenfolgen in einem XML-Dokument. XML-Dateien sind keine Textdateien. – Parfait
Danke, Parfait. Ich schätze die Hilfe! – RunawayPhish