php simplexml with dot character in element in xml

2019-02-13 21:28发布

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>

标签: php simplexml
2条回答
迷人小祖宗
2楼-- · 2019-02-13 22:10

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'};
查看更多
贼婆χ
3楼-- · 2019-02-13 22:21

Try something like

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

$xml = simplexml_load_string($string);

print_r($xml->{'News.Env'});
查看更多
登录 后发表回答