2009-07-23 49 views
1

我想了解这将如何工作我如何解析xml数据在php

为了测试的目的,我做了两个网站。

一个呼吁从另一个

我与拉的file_get_contents

如果我赞同它,我可以看到一个串关数据的XML数据的REST服务。

但是我怎样才能使用它的simpelxml,从节点本身提取数据?

如果我使用simplexml_load_file($ url),我得到一些错误,说xml声明只允许 在文档的开始?

我有这个在我testfile的

<?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文件 的顶部,如果我确定webservice被调用,也许这与处理声明错误有关?

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

谢谢,理查德

+2

没有看到特定文件,很难说出错是什么。 – 2009-07-23 18:50:59

+0

xml看起来不错。检查file_get_contents返回的内容,并在<?xml – koen 2009-07-23 22:38:58

+0

开始之前检查任何内容file_get_contents返回字符串中xml标记中包含的数据。我可以看到,因为我已将它回显到页面。 – Richard 2009-07-24 02:47:28

回答

0

你取到声明之前的空行?

+0

我需要什么声明? – Richard 2009-07-23 19:14:46

3

听起来好像文件顶部有一个空行,它应该以xml声明开头。例如:

<?xml version="1.0" encoding="utf-8"?> 
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; 
0

错误信息中明确指出,有一个空白,行数和文字,在XML数据的开始。这可能是文件编码 - 组织。