$tmp2 = '<?xml version="1.0"?><RWResponse><RESPONSE><DATA><HEADER><COLUMN>interval</COLUMN><COLUMN>name</COLUMN></HEADER></DATA></RESPONSE></RWResponse>';
$xml = simplexml_load_string($tmp2);
echo $xml->RESPONSE->DATA->HEADER->COLUMN[0];
即使var_dump成功,上面也不会输出任何内容:
object(SimpleXMLElement)#2 (1) {
["RESPONSE"]=>
object(SimpleXMLElement)#3 (1) {
["DATA"]=>
object(SimpleXMLElement)#4 (1) {
["HEADER"]=>
object(SimpleXMLElement)#5 (1) {
["COLUMN"]=>
array(2) {
[0]=>
string(8) "interval"
[1]=>
string(13) "creative_name"
}
}
}
}
}
由于
答案 0 :(得分:2)
XML输入有效,我想问题是您的PHP设置(旧版或错误版)。这是我机器上的输出(PHP 5.3.8):
$tmp2 = '<?xml version="1.0"?><RWResponse><RESPONSE><DATA><HEADER><COLUMN>interval</COLUMN><COLUMN>name</COLUMN></HEADER></DATA></RESPONSE></RWResponse>';
$xml = new SimpleXMLElement($tmp2);
var_dump($xml);
// output:
object(SimpleXMLElement)#1 (1) {
["RESPONSE"]=>
object(SimpleXMLElement)#2 (1) {
["DATA"]=>
object(SimpleXMLElement)#3 (1) {
["HEADER"]=>
object(SimpleXMLElement)#4 (1) {
["COLUMN"]=>
array(2) {
[0]=>
string(8) "interval"
[1]=>
string(4) "name"
}
}
}
}
}
更新问题后编辑:
这真的必须是你的PHP版本,这是我机器上的输出:
$tmp2 = '<?xml version="1.0"?><RWResponse><RESPONSE><DATA><HEADER><COLUMN>interval</COLUMN><COLUMN>name</COLUMN></HEADER></DATA></RESPONSE></RWResponse>';
$xml = simplexml_load_string($tmp2);
echo $xml->RESPONSE->DATA->HEADER->COLUMN[0];
// output:
interval
答案 1 :(得分:2)
这是因为SimpleXML需要精确的类型转换,否则你会发生类似这样的事情 - var_dump将输出你想要的,echo不会。 总是需要这样做,还有更糟糕的错误,例如echo ceil($simplexml->someNumber)
会输出7
,如果数字是7.85
,依此类推。
请尝试改为:
echo (string)$xml->RESPONSE->DATA->HEADER->COLUMN[0];
答案 2 :(得分:0)
您可以尝试抑制错误,然后对它们进行迭代检查是否可以修复它们,如解释HERE所示,因为我无法在示例XML中看到错误。
答案 3 :(得分:0)
$tmp2 = '<?xml version="1.0"?><RWResponse><RESPONSE><DATA><HEADER><COLUMN>interval</COLUMN><COLUMN>name</COLUMN></HEADER></DATA></RESPONSE></RWResponse>';
$xml = simplexml_load_string($tmp2);
var_dump($xml);
object(SimpleXMLElement)#1 (1) { ["RESPONSE"]=> object(SimpleXMLElement)#2 (1) { ["DATA"]=> object(SimpleXMLElement)#3 (1) { ["HEADER"]=> object(SimpleXMLElement)#4 (1) { ["COLUMN"]=> array(2) { [0]=> string(8) "interval" [1]=> string(4) "name" } } } } }
答案 4 :(得分:0)
$tmp2 = <<<XML<?xml version="1.0" standalone='yes'?>
<RWResponse>
<RESPONSE>
<DATA>
<HEADER>
<COLUMN>interval</COLUMN>
<COLUMN>name</COLUMN>
</HEADER>
</DATA>
</RESPONSE>
</RWResponse>
XML;
将是真正的方法,所以无论XML输入是什么,你都会采取和配置它,使它看起来更像是这样,它不是一个'字符串',但它实际上是公式化的XML信息。