如何使用PHP CURL强制XML响应

如何使用PHP CURL强制XML响应,php,xml,curl,Php,Xml,Curl,我正在测试一个XMLAPI,它成功地击中了我的帐户,我得到了一个响应,但响应似乎是一个没有标记或任何东西的纯文本字符串,甚至没有名称/对值。我需要将响应捕获为XML,以便使用XML标记来标识响应变量 我使用表单POST将表单中的数据传递到CURL页面,该页面将POST解析为XML格式,然后使用CURL将其发送到API。API是基于XML的,我希望有一个XML响应,但不是接收 救命啊 CURL请求/响应页面 你只是把结果吐出来,可能是在浏览器里。该浏览器可能试图将XML标记呈现为HTML,但失败了

我正在测试一个XMLAPI,它成功地击中了我的帐户,我得到了一个响应,但响应似乎是一个没有标记或任何东西的纯文本字符串,甚至没有名称/对值。我需要将响应捕获为XML,以便使用XML标记来标识响应变量

我使用表单POST将表单中的数据传递到CURL页面,该页面将POST解析为XML格式,然后使用CURL将其发送到API。API是基于XML的,我希望有一个XML响应,但不是接收

救命啊

CURL请求/响应页面


你只是把结果吐出来,可能是在浏览器里。该浏览器可能试图将XML标记呈现为HTML,但失败了,因为它们不是真正的HTML。不呈现未知标记

尝试“查看源代码”,您将看到您的xml,或者

echo '<pre>';
echo htmlspecialchars(print_r($output, true));
echo '</pre>';
echo';
echo htmlspecialchars(print_r($output,true));
回声';

除了Marc B所说的之外,您还可以转发
内容类型
,以便让浏览器以与直接访问XML文档相同的方式显示XML文档

您可以通过以下方式实现这一点:

echo htmlspecialchars(print_r($response, true));

我同意@Marc B的答案。这对我来说很有用

simplexml\u load\u string
没有做我想做的事

我发现必须循环遍历标记的每个名称并让XML对象显示其所有内容是很乏味的

经过进一步研究:


使用
htmlspecialchars
可以将Curl xml响应转换为XHTML。

它返回的结果很好。不要在浏览器中查看它,请查看页面的源代码(呈现为
html
将隐藏所有标记和换行符等)。如果正确,我可以在页面源代码中看到XML格式。如何在屏幕上以XML树的形式显示响应?没有javascript,还有什么简单的方法可以做到这一点吗?有人知道我如何在屏幕上以XML树的形式显示XML,类似于在web浏览器中打开XML文档吗?非常感谢。我花了一整天的时间来解决这件事。
echo '<pre>';
echo htmlspecialchars(print_r($output, true));
echo '</pre>';
header('Content-Type: application/xml; charset=utf-8');
echo $output;
echo htmlspecialchars(print_r($response, true));