php simplexml节点不再存在:如何获取属性值?

时间:2015-07-16 18:58:32

标签: php xml xml-parsing simplexml simplexml-load-string

浪费了6个多小时后,我在这里发布了我的问题。

我试图获取simplexmlelement属性值:

这是我的var_dump值:

object(SimpleXMLElement)#5 (1) {
 ["@attributes"]=>
 array(3) {
 ["type"]=>
string(4) "Rich"
["template"]=>
string(44) "EntityContainer.HeroGeneric_8_1_RTM-7814aaaa"
["disambiguationId"]=>
string(36) "85fa63d3-9596-adb9-b4eb-502273d84f56"
 }
}

我希望得到["输入"]价值" Rich"。但是我无法做到这一点。我在发布之前已经看过很多答案和代码示例,但是他们没有帮助。 实际上我第一次尝试使用simplexmlelement [高级代码]

我的PHP代码

$xml = simplexml_load_file($url);

$xml2 = $xml->channel->item;

foreach ($xml2 as $out_ns) 
{ 

$ns = $out_ns->getNamespaces(true); 
$child = $out_ns->children($ns['win']);

var_dump($child); // Value is written above simple xml object

print_r((string) $child->attributes());

} 

我想知道我做错了什么。我想实现type和disambiguationId属性值。

错误:

  

警告:SimpleXMLElement :: __ toString(): E:\ xampp \ htdocs \ ring \ dom.php 中的节点 15 < / b>

请检查我的代码帮助我。

1 个答案:

答案 0 :(得分:1)

您必须检查元素是否存在:

if($child &&  $child->attributes()) {
   print_r($child->attributes());
}