Как получить доступ и перезаписать данные XML с помощью SimpleXML? - PullRequest
0 голосов
/ 13 ноября 2011

У меня есть файл XML: photo.xml, который выглядит следующим образом.

       <?xml version="1.0" ?> 
       - <users>
           - <uploader ID="11">
             <Name>moz</Name> 
             <Photos_Uploaded>2</Photos_Uploaded> 
           </uploader>

         </users>

Таким образом, каждый раз, когда пользователь moz загружает новую фотографию, файл XML должен увеличивать photos_uploaded на 1. Я уже сделал это с PHP.

Я спрашиваю, как мне использовать SimpleXML для доступа к photo.xml и изменить данные, чтобы отразить изменение и сохранить его?

привет

Редактировать:

Я попробовал это, но это не сработало.

    $xml_Doc = new DOMDocument();
    $xml_Doc->load('photo.xml');


        $statistics="SELECT firstname AS 'user', count( * ) AS 'num',member_id AS ID
        FROM members
        JOIN member_photo
        USING ( member_id )
        GROUP BY firstname ";
        $result= mysql_query($statistics);


    while($row=mysql_fetch_assoc($result)) {

    $uploader=$xml->addChild('uploader');
    $uploader->addAttribute('ID',$row['ID']);
    $uploader->addChild('Name', $row['user']);
    $uploader->addChild('Photos_Uploaded', $row['num']);
    $xml->asXML('');

    }

Ответы [ 2 ]

1 голос
/ 13 ноября 2011

Вы можете просто сделать это, если я правильно понимаю ваш вопрос:

$xml_data = '<?xml version="1.0" ?><users><uploader ID="11"><Name>moz</Name><Photos_Uploaded>2</Photos_Uploaded></uploader></users>';
$xml = simplexml_load_string($xml_data);
$xml->uploader->Photos_Uploaded = 3;
echo $xml->asXML();

это выводит:

<?xml version="1.0"?><users><uploader ID="11"><Name>moz</Name><Photos_Uploaded>3</Photos_Uploaded></uploader></users>

Надеюсь, это поможет:)

0 голосов
/ 19 июня 2018

По состоянию на 2018 год путь будет:

//load xml
$xml = simplexml_load_file('photo.xml');
// modifiy 
//your code..
// save it back
$xml->asXML('photo.xml');

источник: http://php.net/manual/en/simplexmlelement.asxml.php

...