将 XML 结果保存到文档或数据库中


Saving XML results into document or database

我有一个表单,它将信息发送到api并获得XML格式的响应。 我需要知道记录/解析结果的最佳方法(文本文档或其他任何东西)。 如果可能的话,我希望所有回复都保存到一个文档中,而不是每个结果的单个文档中。

我正在使用 ajax post 方法,结果代码需要的本地代理代码如下

<?php
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, 'http://integrate.com/api/test.ashx'); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $_POST);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
file_put_contents('mydata.xml', $result, FILE_APPEND);
die('<h1>Thanks!</h1>');
?>

XML 数据采用以下格式

<result>
<success>0</success>
<leadid/>
<errors>
<error>Missing Field: </error>
</errors>
</result>

文件被创建并且现在包含内容,这是内容,这是一个错误

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<HTML><HEAD><TITLE>Bad Request</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD>
<BODY><h2>Bad Request - Invalid Content Length</h2>
<hr><p>HTTP Error 400. There is an invalid content length or chunk length in the request.</p>
</BODY></HTML>

这是什么意思? API 服务器不接受请求?

至于解析 xml,请使用 XML parser

要将结果保存在文件中,请将每个结果附加到文件末尾,您可以使用file_put_contents($filename, $data, FILE_APPEND)

例如

<?php
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://integrate.com/api/test.ashx');
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($ch);
curl_close($ch);
file_put_contents('mydata.xml', $result, FILE_APPEND);
?>

如果您需要发送帖子请求,请添加:

curl_setopt ($ch, CURLOPT_POSTFIELDS, 'param=value&param=value'); // to be replace with valid query string
curl_setopt ($ch, CURLOPT_POST, 1);