Форматированный вывод XML-дерева в файл

ilkz

Новичок
Форматированный вывод XML-дерева в файл

Всем привет!

Вопрос такой. Есть код (приведен ниже). Его задача проверить, существует ли в базе (XML-файле) юзер или нет. Если существует - скрипт умирает. Если не существует - юзер должен добавиться в базу.

Все, на самом деле, работает, НО. "но" заключено в том, что форматирование при сохранении в файл - исчезает. Причем флаг formatOutput - на него ПХП вообще никак не реагирует... Сломал всю голову - не догоняю где косяк...
Как вариант - грешу на load() после этого флага...

Вот код:
PHP:
<?

foreach($_POST as $var => $value)  $$var=$value;

if(!@$do_register){
	require_once("forms/register.frm");
	die;
}

$user_exists=false;

function walk($node, $level=0){ //рекурсивный обходчик дерева
	global $login, $password, $user_exists;
	for($i=0; $i<$node->childNodes->length; $i++){
		if($node->childNodes->item($i)->nodeType == XML_TEXT_NODE)  continue;
		else{
			$new_node = $node->childNodes->item($i);
			for($space=0; $space<$level; $space++) continue;
			if($new_node->getAttribute('login') == $login && $new_node->getAttribute('password') == md5($password))
			  $user_exists=true;
			walk($new_node, $level+3);
		}
	}
}
$xmlfile="users.xml";
$xml = new DOMDocument('1.0');
$xml->formatOutput = true;
$xml->load($xmlfile);

//проверка, что такой юзер уже существует
$xpath = new DOMXPath($xml);
walk($xpath->query("//userlist")->item(0));
if($user_exists)  die("Пользователь с такими именем и паролем уже существует!");

//если такого пользователя нет, то добавляем
$root = $xml->getElementsByTagName('userlist')->item(0);
$user = $root->appendChild(new DOMElement('user'));
$login = $user->setAttributeNode(new DOMAttr('login', $login));
$password = $user->setAttributeNode(new DOMAttr('password', md5($password)));
$modules = $root->appendChild(new DOMElement('modules'));
if(!$xml->save($xmlfile)) echo "Ошибка сохранения XML!";
else echo "Вы успешно зарегистрированы в системе!";

?>
Вот такой код должен получиться:
PHP:
<?xml version="1.0" encoding="windows-1251"?>
<userlist>
      <user login="aaa" password="bbb"/>
      <modules/>
</userlist>
А он выдает вот такое:
PHP:
<?xml version="1.0" encoding="windows-1251"?>
<userlist>
<user login="aaa" password="bbb"/><modules/></userlist>
 

ilkz

Новичок
Может потребоваться ручное редактирование файла. К тому же, не люблю, когда все в кучу свалено...

-~{}~ 08.09.06 11:31:

Все. Нашел решение:
http://php.mirror.camelnetwork.com/manual/ru/function.dom-domdocument-savexml.php - 1й пост.

Второй вариант:
http://www.zend.com/phorum/read.php?num=6&id=1295&loc=0&thread=1295

Похоже, что это бага не моя, а самого ПХП...
 
Сверху