访问具有特殊字符的实例变量

时间:2014-07-24 20:27:42

标签: php xml simplexml

在PHP中使用SimpleXML,我只想获取<lj:reply-count>节点值。

XML:

<lj:security>public</lj:security>
<lj:posterid>631636</lj:posterid>
<lj:reply-count>42</lj:reply-count>

这样排序,但显然不是这样,因为它会抛出php解析错误

if($item->lj:reply-count)
    $replyCount = $item->lj:reply-count

我尝试了其他一些变体和谷歌,但似乎无法找到我正在寻找的东西。感谢。

2 个答案:

答案 0 :(得分:1)

由于您的xml具有名称空间,因此您必须使用->children()方法。例如:

$xml_string = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:lj="http://www.example.com/">
<lj:security>public</lj:security>
<lj:posterid>631636</lj:posterid>
<lj:reply-count>42</lj:reply-count>
</root>
XML;

$xml = simplexml_load_string($xml_string);
$lj = $xml->children('lj', 'http://www.example.com/');
$reply_count = (string) $lj->{'reply-count'};

echo $reply_count; // 42

答案 1 :(得分:0)

这应该有效:

if($item->{"lj:reply-count"})
    $replyCount = $item->{"lj:reply-count"}