输出或写入xml文件?

时间:2010-12-15 02:32:04

标签: php xml simplexml xmlwriter

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

即时通讯使用此脚本将文本文件转换为xml文件,但我想将其输出到文件中,我该怎么做simpleXML,欢呼

2 个答案:

答案 0 :(得分:6)

file_put_contents函数会这样做。该函数采用文件名和一些内容并将其保存到文件中。

因此重新考虑您的示例,您只需用file_put_contents替换echo语句即可。

$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 :(得分:1)

对于记录,您可以使用asXML()。我的意思是,它是right there in the manual,只需阅读它,你的生活就会变得更轻松。 (我假设,或许可以向StackOverflow询问基本内容对某些人来说更容易)

此外,这个更具间接性,您不一定需要为每个孩子使用addChild()。如果没有该名称的子项,则可以使用object属性表示法直接指定它:

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