我试图找出这是如何工作的
出于测试目的,我已经建立了两个网站。
一个是从另一个
调用REST服务我用file_get_contents
拉取xml数据如果我回应它,我可以看到数据字符串。
但是如何在其上使用simpelxml,从节点本身提取数据?
如果我使用simplexml_load_file($ url),我会收到一些错误,说明只允许xml声明 在文件的开头?
我的测试文件中有这个
<?php
$url='http://www.woonbel.nl/gps/setgpsloc';
//not working
$xml =simplexml_load_file($url);
print_r($xml);
//just a string
$xml=file_get_contents($url);
echo "<h3>$xml</h3><br>";
?>
这是我发送的xml。
我从包含在我的php文件顶部的类文件发送此文件 如果我确定调用了web服务,那么这可能与声明错误有关吗?
header('Content-type: text/xml');
echo "<?xml version=\"1.0\"?>\n";
echo "<response>\n";
echo "\t<status>$status_code</status>\n";
echo "\t<fout>Geen</fout>\n";
echo "</response>";
谢谢,理查德
答案 0 :(得分:3)
听起来文件顶部有一个空行,它应该以xml声明开头。例如:
<?xml version="1.0" encoding="utf-8"?>
答案 1 :(得分:0)
宣言前你有空行吗?
答案 2 :(得分:0)
您的REST服务应该返回XML内容,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<results>
<result>
<value awesome="true">LOLCATS</value>
</result>
</results>
然后,您可以在这些行上执行某些操作以在其他站点上使用该REST服务:
$xml = simplexml_load_string(file_get_contents('http://example.com/rest.xml'));
foreach($xml->result as $result) {
$value = $result->value;
$awesome = $result->attributes()->awesome;
// do something here with our values and attributes
}
SimpleXML的PHP文档包含更复杂/真实的示例。
针对您的特定XML:
$xml = simplexml_load_string(file_get_contents('http://example.com/rest.xml'));
$status = $xml->status;
$fout = $xml->fout;
答案 3 :(得分:0)
错误消息清楚地表明在xml-data的开头有一个空格,行或字符。这可能是文件编码 - 问题。