我已经构建了一个大型XML编写器来构建大型XML文件,但我现在只有一个问题,当文件完成时我可以在我的OS X和Linux disto上打开文件,但是Windows计算机存在很大问题在例如开放。记事本中。
我认为这是因为我的脚本在单个linje上构建XML而不是分割元素op。
我的代码看起来像这样。
$filePath = 'file.xml';
$xmlWriter = new XMLWriter();
$xmlWriter->openMemory();
$xmlWriter->startDocument('1.0', 'ISO-8859-1');
$xmlWriter->startElement('rss');
$xmlWriter->writeAttribute('version', '2.0');
$xmlWriter->startElement('channel');
if ( $rowProduct !== false )
{
foreach( $rowProduct AS $key => $val )
{
$i++;
$xmlWriter->startElement('item');
$xmlWriter->startElement('id');
$xmlWriter->text('content');
$xmlWriter->endElement();
$xmlWriter->endElement();
if (0 == $i%1000)
{
echo "--- clear memery after 1000 rows and dump to xml file ------\n";
file_put_contents($filePath, $xmlWriter->flush(true), FILE_APPEND);
}
}
}
$xmlWriter->endElement();
$xmlWriter->endElement();
file_put_contents($filePath, $xmlWriter->flush(true), FILE_APPEND);
我想要的是像这样的xml
<xml>
<root>
<product>
<id>content</id>
</product>
</root>
</xml>
而不喜欢这个
<xml><root><product><id>content</id></product></root></xml>
有人可以解释我在这里做错了吗?
答案 0 :(得分:2)
有一个功能:
http://php.net/manual/en/function.xmlwriter-set-indent.php
我把它添加到这里:
$xmlWriter->startElement('rss');
$xmlWriter->writeAttribute('version', '2.0');
$xmlWriter->setIndent(true);
我无法在记事本中测试它,但在Atom中它可以工作。