2010-12-15 13 views
1
$fp = fopen('data.txt', 'r'); 

$xml = new SimpleXMLElement('<allproperty></allproperty>'); 

while ($line = fgetcsv($fp)) { 
    if (count($line) < 4) continue; // skip lines that aren't full 

    $node = $xml->addChild('aproperty'); 
    $node->addChild('postcode', $line[0]); 
    $node->addChild('price', $line[1]); 
    $node->addChild('imagefilename', $line[2]); 
    $node->addChild('visits', $line[3]); 
} 

echo $xml->saveXML(); 

im dieses Skript Textdatei in eine XML-Datei zu konvertieren, aber ich möchte es in eine Datei ausgeben, wie ich dieses SimpleXML tun kann, prostausgeben oder in eine XML-Datei schreiben?

Antwort

5

file_put_contents Funktion würde es tun. Die Funktion nimmt einen Dateinamen und einige Inhalte und speichert sie in der Datei.

Also wiederholen Sie Ihr Beispiel, Sie würden nur die Echo-Anweisung durch file_put_contents ersetzen.

$xml = new SimpleXMLElement('<allproperty></allproperty>'); 
$fp = fopen('data.txt', 'r'); 

while ($line = fgetcsv($fp)) { 
    if (count($line) < 4) continue; // skip lines that aren't full 

    $node = $xml->addChild('aproperty'); 
    $node->addChild('postcode', $line[0]); 
    $node->addChild('price', $line[1]); 
    $node->addChild('imagefilename', $line[2]); 
    $node->addChild('visits', $line[3]); 
} 

file_put_contents('data_out.xml',$xml->saveXML()); 
1

Für den Datensatz können Sie asXML() dafür verwenden. Ich meine, es ist right there in the manual, lesen Sie es einfach und Ihr Leben wird einfacher. (ich nehme an, vielleicht für Stackoverflow grundlegenden Dinge einfacher für einige fragen)

Auch und dies ist umständlicher, Sie brauchen nicht unbedingt addChild() für jedes Kind zu verwenden. Wenn kein Kind dieses Namens vorhanden ist, kann es direkt mit der Objekteigenschaftsnotation zugewiesen werden:

$fp = fopen('data.txt', 'r'); 

$xml = new SimpleXMLElement('<allproperty />'); 

while ($line = fgetcsv($fp)) { 
    if (count($line) < 4) continue; // skip lines that aren't full 

    $node = $xml->addChild('aproperty'); 
    $node->postcode  = $line[0]; 
    $node->price   = $line[1]; 
    $node->imagefilename = $line[2]; 
    $node->visits  = $line[3]; 
} 

$xml->asXML('data.xml'); 
Verwandte Themen