2010-12-15 50 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 en utilisant ce script pour convertir le fichier texte dans un fichier xml, mais je veux la sortie dans un fichier, comment puis-je faire simpleXML, acclamationssortie ou écrire dans un fichier xml?

Répondre

5

file_put_contents fonction feraient. La fonction prend un nom de fichier et du contenu et l'enregistre dans le fichier.

Donc, en reprenant votre exemple, vous devez simplement remplacer l'instruction echo par file_put_contents.

$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

Pour l'enregistrement, vous pouvez utiliser asXML() pour cela. Je veux dire, c'est right there in the manual, il suffit de le lire et votre vie va devenir plus facile. (je suppose, peut-être demander StackOverflow pour des trucs de base est plus facile pour certains)

De plus, et celui-ci est plus circonstancielle, vous ne devez pas nécessairement utiliser addChild() pour chaque enfant. S'il n'y a aucun enfant de ce nom, il peut être affecté directement en utilisant la notation de la propriété d'objet:

$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');