我已经构建了一个大型 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>
有人可以解释一下我在这里做错了什么吗?
最佳答案
有一个函数可以做到这一点:
http://php.net/manual/en/function.xmlwriter-set-indent.php
我将其添加到此处:
$xmlWriter->startElement('rss');
$xmlWriter->writeAttribute('version', '2.0');
$xmlWriter->setIndent(true);
我无法在记事本中测试它,但在 Atom 中它可以工作。
关于php - php 中 xml 元素后的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29555610/