php - php 中 xml 元素后的新行

标签 php xml

我已经构建了一个大型 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/

相关文章:

php - 如何在 Symfony2 的表单下拉列表中显示多对一关系?

Javascript 故障破坏了选择输入的 POST 函数

xml - 使用 XSLT 从 XML 文件中删除所有处理指令

PHP -> 如何检查 XML 是否为空

PHP通过内部php函数上传单按钮文件

php - 如何在magento中的购物车中添加自定义数据

php - 开始错误输出

c# - 如何遍历 XDocument 的节点

java - 有没有办法通过知道相对于java中文本节点的索引来查找xml中的特定位置?

用于发票的 XML - 行业标准?