Search code examples
phpxmlsimplexmltext-files

converting text file into xml using php?


data.txt

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

i want convert this textfile into xml using simplexml module using php? thanks :))

p.s. im new to this

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>

Solution

  • Although I think XMLWriter is best suited for that task (like in my other answer), if you really want to do it with SimpleXML, here's how:

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

    You will notice that the output is not as clean: it's because SimpleXML doesn't allow you to automatically indent tags.