2010-12-15 7 views
2

donnees.txtconvertir le fichier texte en XML en utilisant PHP?

ha15rs,250,home2.gif,2 
ha36gs,150,home3.gif,1 
ha27se,300,home4.gif,4 
ha4678,200,home5.gif,5 

je veux convertir ce fichier texte en XML en utilisant le module SimpleXML en utilisant php? merci :))

p.s. im nouveau à ce

EDIT:

<allproperty> 
      <aproperty> 
        <postcode></postcode> 
        <price></price> 
        <imagefilename></imagefilename> 
        <visits></visits> 
       </aproperty> 
       <aproperty> 
        <postcode></postcode> 
        <price></price> 
        <imagefilename></imagefilename> 
        <visits></visits> 
       </aproperty> 
       <aproperty> 
        <postcode></postcode> 
        <price></price> 
        <imagefilename></imagefilename> 
        <visits></visits> 
       </aproperty> 
      </allproperty> 
+0

'explode()' pour diviser les colonnes –

+0

Puis assembler un document DOMDocument: http://stackoverflow.com/questions/1933563/creating-dynamic-xml-with-php et l'écrire dans un fichier –

+0

est un peu lent aujourd'hui. Pourriez-vous nous dire dans quel format vous le voulez? THX. – Jonah

Répondre

3

Bien que je pense que XMLWriter est le mieux adapté à cette tâche (like in my other answer), si vous voulez vraiment faire avec SimpleXML, voici comment:

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

Vous remarquerez que la sortie ne soit pas aussi propre: il est car SimpleXML ne vous autorise pas à indenter automatiquement les tags. Début: `file()` pour analyser le fichier en lignes;

+0

merci votre une étoile !!!! désolé à ce sujet, im un pian dans le cul, de toute façon +1 de moi à nouveau et bonne réponse :)) – getaway

4

Je vous suggère d'utiliser XMLWriter à la place, car il est le mieux adapté pour cela (et il est également intégré comme SimpleXML):

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

$xml = new XMLWriter; 
$xml->openURI('php://output'); 
$xml->setIndent(true); // makes output cleaner 

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

    $xml->startElement('aproperty'); 
    $xml->writeElement('postcode', $line[0]); 
    $xml->writeElement('price', $line[1]); 
    $xml->writeElement('imagefilename', $line[2]); 
    $xml->writeElement('visits', $line[3]); 
    $xml->endElement(); 
} 
$xml->endElement(); 

Bien sûr, vous pouvez remplacer l'argument php://output par un nom de fichier si vous souhaitez qu'il soit exporté vers un fichier.

+0

Im essayant d'apprendre avec simplexml, j'aime votre code si !! Bravo – getaway

Questions connexes