XML 中的 cURL 响应 - Simplexml_load_string 失败

发布于 2024-11-15 17:29:22 字数 637 浏览 2 评论 0 原文

我正在向经过身份验证的区域发出 cURL 请求,该区域工作正常;当回显响应时,除了第一部分之外,一切看起来都很好。这是我的确切回复(用 otherData 标签替换我的实际数据)。

 <?xml version='1.0' encoding='UTF-8'?>
    <Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <ResponseStatus>
           <StatusCode>0</StatusCode>
           <StatusMessage>Success</StatusMessage>
        </ResponseStatus>
        <otherData></otherData>
    </Response>

看看 xml version='1.0'encoding='utf-8' 然后我们如何切换到在实际 XML 中使用 " ?当我尝试使用 simplexml_load_string 加载它时,它会因此失败。我知道我可以简单地这样做str_replace,但这并不能真正理解这里的完整问题。

I'm making a cURL request into an authenticated area which is working fine; and when echoing out the response everything looks good except for the first part. This is my exact response (with the otherData tag replacing my actual data).

 <?xml version='1.0' encoding='UTF-8'?>
    <Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <ResponseStatus>
           <StatusCode>0</StatusCode>
           <StatusMessage>Success</StatusMessage>
        </ResponseStatus>
        <otherData></otherData>
    </Response>

See how the xml version='1.0' encoding='utf-8' and then we switch to using " in the actual XML? When I'm trying to load this with simplexml_load_string it fails due to that. I know I could simply do a str_replace, however that isn't really understanding the full issue here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

带刺的爱情 2024-11-22 17:29:22

我们可以看看你的 php 代码吗?我正在跑步:

<?php
    $xml_string =<<<XML
<?xml version='1.0' encoding='UTF-8'?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ResponseStatus>
       <StatusCode>0</StatusCode>
       <StatusMessage>Success</StatusMessage>
    </ResponseStatus>
    <otherData></otherData>
</Response>
XML;

$xml_obj = simplexml_load_string($xml_string);
echo $xml_obj->ResponseStatus->StatusMessage."\n";
?>

而且看起来效果很好。

Can we see your php code? I'm running:

<?php
    $xml_string =<<<XML
<?xml version='1.0' encoding='UTF-8'?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ResponseStatus>
       <StatusCode>0</StatusCode>
       <StatusMessage>Success</StatusMessage>
    </ResponseStatus>
    <otherData></otherData>
</Response>
XML;

$xml_obj = simplexml_load_string($xml_string);
echo $xml_obj->ResponseStatus->StatusMessage."\n";
?>

And it seems to work fine.

不语却知心 2024-11-22 17:29:22

尝试将所有 " 替换为 '

$string = str_replace("\"", "'", $string);

该字符串正在被以双引号结束。

因此,字符串打印为

$string = " 转换为 ' ,从而使字符串正确输出。

try replacing all " with '.

$string = str_replace("\"", "'", $string);

The string is being closed at the double quotes.

So the string is printing as

$string = "<?xml version='1.0' encoding='UTF-8'?><Response xmlns:xsi=" so obviously using str_replace() would turn that " it's closing on into a ' making the string correctly output.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文