2012-01-30 92 views
0

我无法访问我的SimpleXML内容的子节点。我已经尝试了一些变体,如$xmlData->id$xmlData['id']从SimpleXML访问子节点的内容

我对这方面有点新,所以任何帮助将不胜感激。

代码示例:

object(SimpleXMLElement)#23 (10) { 
    ["id"]=> string(10) "yTZn1JIaaa" 
    ["first-name"]=> string(6) "First Name" 
    ["last-name"]=> string(6) "Last Name"... 
+1

什么是错误信息?你问的是哪个孩子节点? – hakre 2012-01-30 17:14:28

+0

嗯,似乎' - > ID'应该工作...什么是您的输入XML? – Wrikken 2012-01-30 17:15:57

+0

[显示使用php simplexml的XML数据]的可能重复(http://stackoverflow.com/questions/5833788/display-data-from-xml-using-php-simplexml) – Gordon 2012-01-31 09:21:36

回答

1

我试图重建片段:从简单的XML的$xmlData

$xmlData = simplexml_load_string($string); 
    $person = $xmlData->documentElement; 
    $id = $xmlData->id; 

瓦尔转储

<?php 
$string = "<person><id>1</id><firstname>Foo</firstname><lastname>Bar</lastname></person>"; 
$xmlData = simplexml_load_string($string); 
echo $xmlData->id . " - " . $xmlData->firstname . " - " . $xmlData->lastname; 
?> 

这对我工作得很好 - 在输出是:

1 - Foo - Bar 

您可以看到,我的名字和姓氏标记名与您的名称不同 - 短划线有时会导致麻烦。如果你需要的破折号,做这种方式来代替:

echo $xmlData->id . " - " . $xmlData->{'first-name'} . " - " . $xmlData->{'last-name'}; 

不管怎么说,在id工作得很好......所以也许你有一个可以防止您的脚本运行不正常,另一个错误?如果你可以发布你的XML字符串,也许会有帮助。

干杯, 最大

P.S:你为什么要执行这条线?

$person = $xmlData->documentElement; 
+0

非常感谢!是的,短跑是有问题的。 {'a'}使得方法有意义。现在一切正常。我原本没有在代码中的$ person =行,但看过更多的例子后,试了一下。当然,没有帮助。 – jsuissa 2012-01-30 18:06:07

+0

@ jsuissa技术上来说,这个答案和你声称不工作的代码是一样的。请你指出现在突然发生的确切问题是什么? – Gordon 2012-01-30 18:26:26

+0

当然 - 似乎没有包含$ xmlData-> first-name的括号只有失败,但是{'first-name'}就像它的工作。我不知道为什么我自己。想知道这可能与使用Codeigniter有关吗? – jsuissa 2012-01-30 23:42:42