我怎样才能解析php中的xml数据

时间:2009-07-23 18:49:27

标签: php xml web-services parsing rest

我试图找出这是如何工作的

出于测试目的,我已经建立了两个网站。

一个是从另一个

调用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>";

谢谢,理查德

4 个答案:

答案 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的开头有一个空格,行或字符。这可能是文件编码 - 问题。