I'm trying to parse XML feed with SimpleXML, here is a chunk of the XML tree:
<item>
<game:name>Tetris</game:name>
<game:desc>Way Cool Game</game:desc>
<size>5mb</size>
</item>
Well actually, I can succesfully access 'size' with something like that: $item->size
, but how do I get value? Of course I can't call like that: $item->game:name
, and I don't know how what goes after ':' is called. Is it a parameter, attribute or what?
Thanks for advance!
You need to define the namespace for game. XML requires all namespaces to be defined. There have been several previous answers about using custom namespaces:
i.e.
- How do I parse XML containing custom namespaces using SimpleXML?
Use the children() function to get the children of the namespace.
$useThis = $xmlDoc->children("http://game.namespace/");
given that http://game.namespace is the URL to your game namespace in the root node.
Here's an explanation/sample:
- SimpleXML and namespaces (Oct 2005; by Kevin Yank for Sitepoint)
As for the getting the value of a SimpleXMLElement, you just cast it to a string:
$size_value = (string)$item->size;