使用PHP导入XML,不接受-&引用;在XML标记中
这就是我的XML看起来的样子:使用PHP导入XML,不接受-&引用;在XML标记中,php,html,xml,import,tags,Php,Html,Xml,Import,Tags,这就是我的XML看起来的样子: <?xml version="1.0" encoding="UTF-8"?> <citizen> <military> <rank-points>62750</rank-points> <stars>1</stars> <total-damage>18243</total-damage> <rank>
<?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>
但是,因为XML标记的名称中有一个“-”,所以它无法工作。结果始终为0。使用以下方法:
$rank = $xml->{'military'}->rank-points;
PHP实际上将:
- 搜索
$xml->{'millitary'}->rank
- 并尝试将常量
点的值减去该值
- 如果contant不存在,它将使用字符串值
“points”
- 如果contant不存在,它将使用字符串值
Notice: Use of undefined constant points - assumed 'points'
要解决此问题,请尝试在标记名称周围添加
{'}
:
$rank = $xml->{'military'}->{'rank-points'};
通过这种方式,PHP将知道
秩点
是一回事,而不是一个减法。您还必须将秩点
封装在大括号中:
$rank = $xml->{'military'}->{'rank-points'};
PHP假设您正试图从变量$rank中减去contant“点”。SimpleXML文档正好演示了这个问题;访问XML文档中包含PHP命名约定不允许的字符的元素。解决方案是使用,这基本上意味着(在您的案例中)将属性名称包装在
{'
和}
中
有趣的是,您选择了用大括号语法包装军事
,尽管这是不必要的,因为它包含一个完全有效的普通属性名称(c.f.秩点
)
因此,您的示例可以简单地变成:
$rank = $xml->military->{'rank-points'};
$rank = $xml->military->{'rank-points'};