这就是我的XML的样子:
<?xml version="1.0" encoding="UTF-8"?>
<citizen>
<military>
<rank-points>62750</rank-points>
<stars>1</stars>
<total-damage>18243</total-damage>
<rank>Commander</rank>
<fight-count>0</fight-count>
</military>
</citizen>
现在,我想用PHP导入标签"rank-points"里面的内容使用
$rank = $xml->{'military'}->rank-points;
但是,因为XML标记的名称中有一个"-",所以它不起作用。结果总是0
使用这个:
$rank = $xml->{'military'}->rank-points;
PHP实际上会:
- 查找
$xml->{'military'}->rank
- ,并尝试将常数
points
的值减去该值- 如果内容不存在,它将使用字符串值
"points"
。
- 如果内容不存在,它将使用字符串值
尝试执行你的代码,你应该得到一个通知,指示我所说的:
Notice: Use of undefined constant points - assumed 'points'
要解决这个问题,请尝试在标记的名称周围添加{''}
:
$rank = $xml->{'military'}->{'rank-points'};
这样,PHP将知道rank-points
是一个东西——而不是一个减法。
您还必须将rank-points
封装在花括号中:
$rank = $xml->{'military'}->{'rank-points'};
PHP假定您正在尝试从变量$rank中减去内容"point"。
SimpleXML文档中有一个示例准确地演示了这个问题;访问XML文档中包含PHP命名约定不允许的字符的元素。解决方案是使用内联变量属性,这基本上意味着(在您的情况下)在{'
和'}
中包装属性名称。
有趣的是,您选择将military
包装在花括号语法中,尽管这是不必要的,因为它包含一个完全有效的普通属性名称(cf . rank-points
)。
所以你的例子可以简单地变成:
$rank = $xml->military->{'rank-points'};