You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel新手开发手机充值App登录时遇DOMDocument参数类型错误求助

解决Laravel中DOMDocument::loadXML()参数类型错误
  • 错误核心原因:调用DOMDocument::loadXML()时传入了数组,而该方法要求第一个参数必须是字符串格式的XML内容。大概率是对接手机充值相关第三方接口后,把接口返回的数组直接传给了loadXML(),而非先转为XML字符串,或是误将非XML格式的接口返回当作XML处理。

  • 排查与修复步骤:

    • 定位错误代码:通过错误堆栈找到调用loadXML()的具体文件和行号,检查传入该方法的变量类型。
    • 回滚curl文件修改:不要随意修改Laravel核心的curl相关文件(如vendor目录下的文件),修改会导致依赖混乱,执行composer install恢复核心文件。
    • 针对性处理接口返回:
      • 若接口返回JSON/数组:直接用json_decode()(针对JSON字符串)解析后操作数组即可,无需调用loadXML()。
      • 若需将数组转为XML:使用自定义函数转换数组为XML字符串后再传入loadXML(),示例代码:
        function arrayToXml($data, $rootNode = 'root', $xml = null) {
            if ($xml === null) {
                $xml = new DOMDocument('1.0', 'UTF-8');
                $xml->appendChild($xml->createElement($rootNode));
            }
            $parent = $xml->documentElement;
            foreach ($data as $key => $value) {
                $element = $xml->createElement(is_numeric($key) ? 'item' : $key);
                $parent->appendChild($element);
                is_array($value) ? arrayToXml($value, $key, $xml) : $element->appendChild($xml->createTextNode($value));
            }
            return $xml->saveXML();
        }
        
        调用该函数得到字符串后,再传入loadXML()即可。

内容的提问来源于stack exchange,提问作者Feezlinkz Cooperation

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:05:03