$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,欢呼
答案 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');