似乎无法从simpleXMLobject
问题描述:
得到的字符串我有我的xml文件似乎无法从simpleXMLobject
<names>
<person>
<name>John</name>
<alias>
<part>Joe</part>
<part>Foo</part>
</alias>
</person>
</names>
我保存为$xml
。
foreach($xml as $person)
var_dump($person->name);
上面的代码返回
object(SimpleXMLElement)#7 (1) {
[0]=>
string(4) "John"
}
,而不是仅仅
string(4) "John"
有了实际回报它给,我会假设加入[0]
该变量的结束会给我正确的回报,但它返回完全相同的东西。我曾尝试加入[0]
,["0"]
,->0
,->"0"
,并且没有任何效果。最后2次尝试给了我一个解析错误,而前2次给了我与原始相同的响应。
如何从object(SimpleXMLElement)
内部获得string(4) "John"
?
答
这是因为XML是一种资源,即:
$xml = '<names>
<person>
<name>John</name>
<alias>
<part>Joe</part>
<part>Foo</part>
</alias>
</person>
</names>';
$parsed = simplexml_load_string($xml);
var_dump($parsed->getName());
将输出names
,可见,该元件/层你是在被命名为names
。
所以parsed-> person-> name会给你一个资源。如果你要删除的资源,只是访问该值,则需要将其转换为字符串:
var_dump((string)$parsed->person->name);
通过将其明确地强制转换为字符串:'的var_dump((字符串)$人 - >名);' –
'$ person-> name - > __ toString()'但是你不能害怕这个,php会把它转换成字符串。用于考试测试'echo $ person-> name' – splash58
@MarkBaker说的。或者简单地'echo'-ing或'print',它会调用魔术方法'__toString()'。 https://3v4l.org/lrPMr – Havelock