在simplexml_load_file php中的addChild()之后添加换行符

时间:2017-10-24 07:02:28

标签: php xml

我已使用simplexml_load_file()函数在现有xml文件中添加了一个新子项。但它并不是格式化的东西.. 我试过这段代码

   `$file = 'data/users.xml';
    $xml = simplexml_load_file($file);
    $xml->Users;
    $newuser = $xml->addChild('userdata');
    $newuser->addChild('userid', $data['id']);
    $newuser->addChild('name', $data['name']);
    $newuser->addChild('email', $data['email']);
    $newuser->addChild('mobile', $data['mobile']);
    $newuser->addChild('username', $data['user']);
    $newuser->addChild('password', $data['pass']);
    $newuser->addChild('role', $data['role']);

    $dom = dom_import_simplexml($xml)->ownerDocument;
    $dom->formatOutput = TRUE;
    $dom->save($file);`

结果是

`<userdata><name>agallery</name><filepath>path/to/gallery</filepath>
 <thumb>mythumb.jpg</thumb></userdata>`

但我需要像这样格式化

`<userdata>
 <name>agallery</name>
 <filepath>path/to/gallery</filepath>
 <thumb>mythumb.jpg</thumb>
 </userdata>`

1 个答案:

答案 0 :(得分:1)

文档的格式在XML方面并不重要,尽管它通常倾向于以结构化的布局格式呈现。 SimpleXML没有执行此操作的选项(AFAIK),因此您可能必须使用DOM来执行此操作...

$dom = dom_import_simplexml($xml)->ownerDocument;
$dom->formatOutput = TRUE;
$dom->save($file);

这将获取文档,将其转换为DOM,然后格式化输出。

编辑:这是一个常见的问题,格式似乎有时似乎不起作用,解决方法似乎过多,但这就是最终的解决方法...

$dom = dom_import_simplexml($xml)->ownerDocument;
$dom->formatOutput = true;
$dom->preserveWhiteSpace = false;
$dom->loadXML( $dom->saveXML());
$dom->save($file);
相关问题