我编写了一个简单的代码(基于互联网上的一些教程)来解析和显示XML文件。但是,我只知道如何引用存储在我的服务器上的XML文件,并且我希望能够使用从POST返回给我的XML文件。
现在我的代码看起来像这样:
if( ! $xml = simplexml_load_file('test.xml') )
{
echo 'unable to load XML file';
}
else
{
foreach( $xml as $event)
{
echo 'Title: ';
echo "<a href=\"$event->url\">$event->title</a><br />";
echo 'Description: '.$event->info.'<br />';
echo '<br />';
}
}
是否有某种方法可以将simpleXML_load_file函数替换为允许我指向返回XML文件的POST URL的函数?
答案 0 :(得分:3)
使用simplexml_load_string而不是loadfile:
simplexml_load_string($_POST['a']);
如果你在POST中获得文件的url,你可以使用带有url的simplexml_load_file函数,但如果这不起作用,你可以将file_get_contents与simplexml_load_string一起使用:
//say $_POST['a'] == 'http://example.com/test.xml';
simplexml_load_file($_POST['a']); // <-- propably works
simplexml_load_string(file_get_contents($_POST['a'])); //<-- defenitly works (propaly what happens internally)
在安全模式下运行PHP也可以禁止获取外部文件的内容。
答案 1 :(得分:2)
如果您收到的是用户上传的文件,您可以找到(文件)查看$_FILES
超全局变量的内容 - 您可以阅读有关文件上传的更多信息here (例如,如果您不希望在请求结束时删除文件,请不要忘记调用move_uploaded_file
。
然后,您可以使用与未上传文件相同的方式处理此文件。
如果您收到XML字符串,则可以使用simplexml_load_string
。
如果您只收到远程XML内容的URL,则必须:
如果您的服务器配置正确(即如果启用了allow_url_fopen
),则可以使用simplexml_load_file
将URL作为参数来完成。
否则,必须使用curl进行下载 - 请参阅curl_exec
获取一个非常基本的示例,并curl_setopt
了解您可以使用的选项(您特别需要使用CURLOPT_RETURNTRANSFER
,将XML数据作为字符串传递给simplexml_load_string
)。
答案 2 :(得分:1)
来自http://www.developershome.com/wap/wapUpload/wap_upload.asp?page=php4:
如果你不想保存 直接上传文件但要处理 它,PHP的功能 file_get_contents()和fread()可以 帮你。 file_get_contents() function返回一个字符串 包含上传的所有数据 文件:
if (is_uploaded_file($_FILES['myFile']['tmp_name']))
$fileData = file_get_contents($_FILES['myFile']['tmp_name']);
这将为您提供该文件中原始文本的句柄。从那里你需要解析XML。希望有所帮助!
答案 3 :(得分:0)
结帐simplexml_load_string。然后,您可以使用cURL来发布帖子并获取结果。一个例子:
<?php
$xml = simplexml_load_string($string_fetched_with_curl);
?>