在simplexml\u load\u文件php中的addChild()之后添加换行符

在simplexml\u load\u文件php中的addChild()之后添加换行符,php,xml,Php,Xml,我使用simplexml\u load\u file()函数在现有xml文件中添加了一个新的子文件。但它不是格式化的东西。。 我试过这个密码 `$file = 'data/users.xml'; $xml = simplexml_load_file($file); $xml->Users; $newuser = $xml->addChild('userdata'); $newuser->addChild('userid', $data['i

我使用
simplexml\u load\u 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>`
`agallerypath/to/gallery
mythumb.jpg`
但我需要这样的格式

`<userdata>
 <name>agallery</name>
 <filepath>path/to/gallery</filepath>
 <thumb>mythumb.jpg</thumb>
 </userdata>`
`
阿加莱利
路径/目的地/画廊
mythumb.jpg
`

涉及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);

在您的回答中,
$dom
变量表示?$dom被创建为DOMDocument(从
dom\u import\u simplexml
返回的domeElement随后用于获取所有者文档)。这只是SimpleXML文档的一个副本。请输入我更新的问题代码..它仍然像旧结果一样..我遗漏了什么吗?我已经更新了代码并与您的源代码进行了核对-答案并不理想,但似乎有效。