Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

simple xml add attribute

Tags:

php

xml

How can I set attributes when I add new elements in XML with PHP. My PHP code is like this:

 <?php
     $xml = simplexml_load_file ( 'log.xml' );

     $movies = $xml->addChild("time");
      // add attribut `value` here in tag time

     $user = $movies->addChild("user", "");
     // add attribut `id` here in tag user

     $action = $user->addChild("action","");
     // add attribut `value` here in tag action

     $action->addChild("table","customers");

     $action->addChild("table_id","1");

     echo $xml->saveXML( 'log.xml' );
 ?>

And I want output to look like this:

// log.xml
<?xml version="1.0" encoding="utf-8"?>
<log>
<time value="2013-01-10 12:20:01">
    <user id="1">
        <action value="delete">
            <table>customer</table>
            <table_id>1</table_id>
        </action>   
        <action value="insert">
            <table>customer</table>
            <data>
                <nama>budi</nama>
            </data>
        </action>
        <action value="update">
            <table>customer</table>
            <table_id>1</table_id>
            <old_data>
                <nama>andi</nama>
            </old_data>
            <new_data>
                <nama>budi</nama>
            </new_data>
        </action>
    </user>
</time>
</log>

please help me..i am very new about xml

like image 342
casper Avatar asked Sep 06 '26 00:09

casper


2 Answers

Use SimpleXMLElement::addAttribute — Adds an attribute to the SimpleXML element

edit: Your use case -

     $action = $user->addChild("action","");
     // add attribut `value` here in tag action
     $action->addAttribute('value','update'); // add this

     $action->addChild("table","customers");

     $action->addChild("table_id","1");

Best example:

http://php.net/manual/en/simplexmlelement.addattribute.php

<?php

include 'example.php';

$sxe = new SimpleXMLElement($xmlstr);
$sxe->addAttribute('type', 'documentary');

$movie = $sxe->addChild('movie');
$movie->addChild('title', 'PHP2: More Parser Stories');
$movie->addChild('plot', 'This is all about the people who make it work.');

$characters = $movie->addChild('characters');
$character  = $characters->addChild('character');
$character->addChild('name', 'Mr. Parser');
$character->addChild('actor', 'John Doe');

$rating = $movie->addChild('rating', '5');
$rating->addAttribute('type', 'stars');

echo $sxe->asXML();

?>

Credits to first example in PHP.Net ref page...

like image 77
Eswar Rajesh Pinapala Avatar answered Sep 07 '26 15:09

Eswar Rajesh Pinapala


Use addAttribute()

$movies->addAttribute('value','your value here');
$action->addAttribute('value','your value here');
$user->addAttribute('id','your value here');
like image 25
SomeShinyObject Avatar answered Sep 07 '26 13:09

SomeShinyObject



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!