0

我正在尝试通过在 php 中通过file_get_contents()调用 url 来解析 xml 数据。结果是:

<?xml version="1.0" encoding="UTF-8" ?>
<RESPONSE>
<SINGLE>
<KEY name="sitename"><VALUE>RedCross Test</VALUE>
</KEY>
<KEY name="username"><VALUE>test1</VALUE>
</KEY>
<KEY name="firstname"><VALUE>Test1</VALUE>
</KEY>
<KEY name="lastname"><VALUE>testTest1</VALUE>
</KEY>
</SINGLE>
</RESPONSE>

这是程序:

<?php

header('Content-type: text/html; charset=utf-8');

$xml_obj = file_get_contents("http://localhost/example/webservice/rest/server.php?wstoken=".$token."&function=get_info");

$data = $xml_obj->SINGLE->KEY[2]->VALUE;
echo $data;

?>

响应是:第 2 行第 1 列的错误:注意:试图在第 7 行获取非对象的属性。有人可以告诉我吗?

4

3 回答 3

3

file_get_contents只是将 XML 代码作为字符串返回,而不对其进行解析。您可能想simplexml_load_file改用。

于 2013-01-22T18:47:23.847 回答
3

错误说明这$xml_obj不是一个对象。那是因为它不是。它只是一个 var 存储来自file_get_contents.

代替:

$xml_obj = file_get_contents("http://localhost/example/webservice/rest/server.php?wstoken=".$token."&function=get_info");

尝试:

$xml_obj = simplexml_load_file("http://localhost/example/webservice/rest/server.php?wstoken=".$token."&function=get_info");

或者,如果您需要将内容用于其他内容并希望将其放在单独的变量中:

$contents = file_get_contents("http://localhost/example/webservice/rest/server.php?wstoken=".$token."&function=get_info");

$xml = new DOMDocument();
$xml->loadXML( $contents );
于 2013-01-22T18:47:56.287 回答
0

file_get_contents 返回一个STRING。例如原始 xml。您需要先将该字符串加载到 DOM 或 Simple_XML 中,然后才能->xxx对其进行处理:

$xml = file_get_contents('...');
$dom = new DOMDocument();
$dom->loadXML($xml);
etc...
于 2013-01-22T18:48:01.207 回答