Reputation: 1155
Say I have this following XML structure:
<?xml version="1.0" encoding="UTF-8"?>
<main>
<parent>
<child1>some value</child1>
<child2>another value</child2>
</parent>
</main>
I made a variable of the XML and now I want to get the values of child1, so I use SimpleXML:
$xml = new SimpleXMLElement($xml);
$this->xmlcode = (string) $xml->main->parent->child1;
But I get this message: Notice: Trying to get property of non-object in /x.php on line x
I also tried it with $xml->parent->child1, but no success.
Anyone??
Upvotes: 16
Views: 37811
Reputation: 770
Variant for xpath (Also how to get content of node having dashes in name):
<?xml version="1.0" encoding="UTF-8"?> <main> <parent> <child-1>some value</child-1> <child-2>another value</child-2> </parent> </main>
$xml = simplexml_load_string($content);
$node_value= (string)$xml->xpath('parent/child-1')[0];
result of $node_value:
"some value"
Upvotes: 0
Reputation: 4249
A good example of using XPath with php for the SimpleXMLElement can be found here http://www.php.net/manual/en/class.simplexmlelement.php#95229
// Find the topmost element of the domDocument
$xpath = new DOMXPath($xml);
$child1 = $xpath->evaluate('/main/parent/child1')->item(0);
Upvotes: 2
Reputation: 134581
$xml = new SimpleXMLElement($xml);
$this->xmlcode = (string) $xml->parent[0]->child1;
Upvotes: 31