PHP DOM XML不会在标记之后打印掉换行符

时间:2012-02-09 20:08:43

标签: php xml dom domdocument

所以我的问题是,当我使用php XML DOM解析器保存时,我的xml文件中的标签没有使用换行符正确格式化。

$xdoc = new DOMDocument();
$xdoc->formatOutput = true;
$xdoc->preserveWhiteSpace  = false;
$xdoc->load($file);

$new_topic=$xdoc->createElement("topicref", "");
$new_topic->setAttribute("navtitle", $new_node);

$new_topichead=$xdoc->createElement("topichead", "");
$new_topichead->setAttribute("navtitle", $parent_node->getAttribute("navtitle"));
$new_topichead->appendChild($new_topic);
$parent_node->parentNode->replaceChild($new_topichead, $parent_node);

$xdoc->save($file);

以下是我输出的片段:

<topichead>
    <topichead navtitle="blarg blarg"><topicref navtitle="another blarg blarg" href="another blarg blarg"></topicref></topichead>
</topichead>

这只是我文件的结尾,但是对于我正在替换的标签 - 主题头navtitle =“blarg blarg”,附加了topicref,它会在旁边添加,而不是转到下一行。我不能这样读。

如上所述,我尝试过“$ xdoc-&gt; formatOutput = true;     $ xdoc-&gt; preserveWhiteSpace = false;“

但这些似乎不起作用 - 它们用标签格式化,但它没有给我正确的换行符。

谢谢=)

1 个答案:

答案 0 :(得分:8)

这是一个常见问题,非常烦人。这有点蛮力,但应该有效:

// Reload XML to cause format output and/or preserve whitespace to take effect
$xdoc->loadXML($xdoc->saveXML());

$xdoc->save($file);