2009-12-15 2 views
0

Как отредактировать xml-файлы и добавить новую запись в конец </user>?PHP XML добавление новой записи

Мой XML (FileZilla) выглядят как

<FileZillaServer> 
<Users> 
<User Name="test"> 
</User> 
/* using php to add another users on here <User Name="test2" */ 
</Users> 
</FileZillaServer> 

Спасибо за помощь.

ответ

1

Классы DOMDocument можно использовать для управления XML-документом.

Например, вы могли бы использовать что-то вроде этого:

$str = <<<XML 
<FileZillaServer> 
    <Users> 
     <User Name="test"> 
     </User> 
    </Users> 
</FileZillaServer> 
XML; 

$xml = DOMDocument::loadXML($str); 
$users = $xml->getElementsByTagName('Users'); 

$newUser = $xml->createElement('User'); 
$newUser->setAttribute('name', 'test2'); 
$users->item($users->length - 1)->appendChild($newUser); 

var_dump($xml->saveXML()); 

Который поможет вам:

string '<?xml version="1.0"?> 
<FileZillaServer> 
    <Users> 
     <User Name="test"> 
     </User> 
    <User name="test2"/></Users> 
</FileZillaServer> 
' (length=147) 

т.е. вам:

  • создать новый User элемент
  • вы установили его name attr ibute
  • и вы добавить, что новый элемент Users

(Есть, вероятно, другие способы сделать это, избегая использования length; но об этом я впервые подумал - совсем рано утром ^^)

0

Использовать SimpleXML. Как следует из названия, это самый простой способ обработки документов XML.

$FileZillaServer = simplexml_load_string(
    '<FileZillaServer> 
     <Users> 
      <User Name="test" /> 
     </Users> 
    </FileZillaServer>' 
); 

$User = $FileZillaServer->Users->addChild('User'); 
$User['Name'] = 'Test2'; 

echo $FileZillaServer->asXML(); 
+0

Он добавляет <Имя = "Test2" /> Обратите внимание на/после "test2", она не должна быть там. – 2009-12-16 05:10:29

+0

Это очень, может быть, я могу вас заверить. В противном случае ваш XML будет искажен. –