PHP simpleXML 如何以格式化的方式保存文件?

2022-08-30 07:53:22

我正在尝试使用PHP的SimpleXML向现有的XML文件添加一些数据。问题是它将所有数据添加到一行中:

<name>blah</name><class>blah</class><area>blah</area> ...

等等。全部在一行中。如何引入换行符?

我怎样才能让它变成这样?

<name>blah</name>
<class>blah</class>
<area>blah</area>

我正在使用函数。asXML()

谢谢。


答案 1

您可以使用 DOMDocument 类来重新格式化代码:

$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
echo $dom->saveXML();

答案 2

Gumbo的解决方案可以解决问题。您可以使用上面的 simpleXml 进行操作,然后在末尾添加此内容以进行回显和/或以格式化方式保存它。

下面的代码会回显它并将其保存到文件中(请参阅代码中的注释并删除您不需要的任何内容):

//Format XML to save indented tree rather than one line
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
//Echo XML - remove this and following line if echo not desired
echo $dom->saveXML();
//Save XML to file - remove this and following line if save not desired
$dom->save('fileName.xml');

推荐