Search code examples
phpsimplexml

php simplexml with dot character in element in xml


With the below xml format how we can access News.Env element from XMLReader in php?

$xmlobj->News->News.Env gives Env which is not correct.

<?xml version="1.0" encoding="utf-8"?>
<News>
  <News.Env>abc</News.Env>
</News>

Solution

  • This is because the dot . is the string concatenator in php. In your case it tries to concatenate $xmlobj->News->News (which doesn't exists and is therefore empty) with the constant Env (which doesn't exists too and is treated as a string. you would get a notice about this with an appropriate error_level)

    $tmp = 'News.Env';
    $xmlobj->News->$tmp;
    

    or in short

    $xmlobj->News->{'News.Env'};
    

    Update: If you use SimpleXML (and according the syntax you do it) it $xmlobj "starts" with the News-(root-)Element.

    $xmlobj->{'News.Env'};