PHP XML добавление новой записи - PullRequest
0 голосов
/ 15 декабря 2009

Как мне отредактировать XML-файлы и добавить новую запись в конце ?

Мой xml (filezilla) выглядит как

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

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

Ответы [ 2 ]

1 голос
/ 15 декабря 2009

Вы можете использовать классы 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 атрибут
  • и вы добавляете этот новый элемент к Users

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

0 голосов
/ 16 декабря 2009

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

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

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

echo $FileZillaServer->asXML();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...