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

18 浏览
0 Comments

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

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

blahblahblah ...

以此类推。都在一行上。如何添加换行符?

我该如何使其变成这样?

blah
blah
blah

我正在使用asXML()函数。

谢谢。

0
0 Comments

PHP SimpleXML是一种用于解析和操作XML文件的库。然而,当我们尝试将文件保存为格式化的形式时,SimpleXML似乎无法直接提供这样的功能。这个问题的解决方法是使用DOMDocument类重新格式化代码。

要重新格式化代码,可以使用以下代码:

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

这段代码首先创建了一个DOMDocument对象,并设置了preserveWhiteSpace和formatOutput属性。然后,它加载了SimpleXML对象的XML内容,并使用saveXML()方法将格式化后的XML内容输出。

这个解决方法简单而高效。通过将SimpleXML对象的XML内容加载到DOMDocument对象中,并设置formatOutput属性为true,我们可以轻松地保存XML文件以格式化的形式。

总之,虽然SimpleXML本身似乎无法直接保存XML文件为格式化的形式,但我们可以利用DOMDocument类来实现这个目标。通过将SimpleXML对象的XML内容加载到DOMDocument对象中,并设置formatOutput属性为true,我们可以轻松地保存XML文件以格式化的形式。这个解决方法简单而高效。

0
0 Comments

问题的原因是希望以格式化的方式保存一个PHP simpleXML文件,但直接使用`saveXML()`方法不能实现。解决方法是使用`dom_import_simplexml`函数将simpleXML对象转换为DomElement对象,然后利用其格式化输出的功能。

具体的解决方法如下:

$dom = dom_import_simplexml($simple_xml)->ownerDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
echo $dom->saveXML();

但是,上述代码不起作用,因为`dom_import_simplexml`函数返回的是一个DOMElement对象,而不是DOMDocument对象。所以需要更正代码中的`ownerDocument`为`documentElement`。

更正后的代码如下:

$dom = dom_import_simplexml($simple_xml)->documentElement;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
echo $dom->saveXML();

需要注意的是,为了使`preserveWhiteSpace`和`formatOutput`生效,需要在导入文档之前设置它们的值。

然而,这样还是不能正常工作。这是因为`dom_import_simplexml`函数返回的DOMElement对象已经导入了文档,所以在设置`preserveWhiteSpace`和`formatOutput`的值之前,需要将其重新导入。

正确的代码如下:

$dom = dom_import_simplexml($simple_xml)->ownerDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->importNode(dom_import_simplexml($simple_xml), true);
echo $dom->saveXML();

通过这种方式,可以以格式化的方式保存PHP simpleXML文件。

0