data.txt中
ha15rs,250,home2.gif,2
ha36gs,150,home3.gif,1
ha27se,300,home4.gif,4
ha4678,200,home5.gif,5
我想使用php使用simplexml模块将此文本文件转换为xml?谢谢:))
P.S。我是新来的
编辑:
<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 :(得分:4)
我建议您使用XMLWriter代替,因为它最适合(并且它也像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();
当然,如果要将php://output
参数输出到文件,可以将其更改为文件名。
答案 1 :(得分:3)
虽然我认为XMLWriter最适合该任务(like in my other answer),但如果你真的想用SimpleXML做,那么方法如下:
$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();
你会注意到输出不是那么干净:因为SimpleXML不允许你自动缩进标签。