【发布时间】:2019-02-13 15:43:15
【问题描述】:
前提条件:拥有用 PHP 编写的亚马逊 MWS 演示文件。亚马逊以 XML 格式响应结果。 我的工具适用于 Amazon 的输出,仅适用于 json。
需要将亚马逊的输出转换成json。
- 我从这里下载了 FluentDOM https://github.com/ThomasWeinert/FluentDOM
- 在我的脚本附近解压
- 试图在我的文件中包含 FluentDom 库
我的脚本路径:
C:\xampp\htdocs\src\MarketplaceWebServiceProducts\Samples\MyGetASINdetails.php
FluentDom 的路径:
C:\xampp\htdocs\src\src\FluentDOM.php
我尝试用这种方式连接库
include('../../src/FluentDOM.php');
以这种方式从 XML 转换为 Json(在 StackOverflow 上的其他线程中看到):
$dom = new DOMDocument();
$dom->loadXML($response->toXML());
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
// echo $dom->saveXML();
$json = new \FluentDOM\Serializer\Json\RabbitFish($dom->saveXML());
$object = json_decode($json);
echo "<pre>" . print_r( $object, true) . "</pre>";
echo "<script>console.log({$json})</script>";
运行时得到
致命错误:在第 43 行的 C:\xampp\htdocs\src\src\FluentDOM.php 中,带有类类型提示的参数的默认值只能为 NULL
FluentDOM.php 第 43 行:
public static function load($source, string $contentType = 'text/xml', array $options = []): \FluentDOM\DOM\Document {
【问题讨论】:
-
看起来您在 PHP5 上运行,但您尝试执行的代码是 PHP7(函数参数中有类型提示)
-
我检查了,你是对的:USER - PC@SASHA c:\xampp # php -v PHP 5.6.40 (cli) (built: Jan 9 2019 15:12:06) 版权所有 ( c) 1997-2016 PHP Group Zend Engine v2.6.0,版权所有 (c) 1998-2016 Zend Technologies
-
用 PHP 7.* 安装了 XAMMP。变得更好,但没有那么多。致命错误:未捕获错误:在 C:\xampp\htdocs\src\MarketplaceWebServiceProducts\Samples\MyGetASINdetails.php:118 中找不到类“FluentDOM\Serializer\Json\RabbitFish”:118 堆栈跟踪:#0 C:\xampp\htdocs\src \MarketplaceWebServiceProducts\Samples\MyGetASINdetails.php(85):invokeListMatchingProducts(Object(MarketplaceWebServiceProducts_Client), Object(MarketplaceWebServiceProducts_Model_ListMatchingProductsRequest)) #1 {main} 在 C:\xampp\htdocs\src\MarketplaceWebServiceProducts\Samples\MyGetASINdetails.php 第 118 行抛出