【问题标题】:parsing xml array not displaying all data in view解析xml数组不显示视图中的所有数据
【发布时间】:2015-09-22 07:29:26
【问题描述】:

我正在尝试显示 Ebay GetSingleItem 响应 (http://developer.ebay.com/devzone/shopping/docs/callref/GetSingleItem.html),但在显示数组 ["ItemSpecifics"] 时遇到问题。通话正常,我收到以下信息:

["ItemSpecifics"] => object(DTS\eBaySDK\Shopping\Types\NameValueListArrayType)#208 (2) {
          ["values":"DTS\eBaySDK\Types\BaseType":private] => array(1) {
            ["NameValueList"] => object(DTS\eBaySDK\Types\UnboundType)#129 (5) {
              ["data":"DTS\eBaySDK\Types\UnboundType":private] => array(8) {
                [0] => object(DTS\eBaySDK\Shopping\Types\NameValueListType)#207 (2) {
                  ["values":"DTS\eBaySDK\Types\BaseType":private] => array(2) {
                    ["Name"] => string(6) "Format"
                    ["Value"] => object(DTS\eBaySDK\Types\UnboundType)#191 (5) {
                      ["data":"DTS\eBaySDK\Types\UnboundType":private] => array(1) {
                        [0] => string(10) "DVD/HD-DVD"
                      }
                      ["position":"DTS\eBaySDK\Types\UnboundType":private] => int(0)
                      ["class":"DTS\eBaySDK\Types\UnboundType":private] => string(44) "DTS\eBaySDK\Shopping\Types\NameValueListType"
                      ["property":"DTS\eBaySDK\Types\UnboundType":private] => string(5) "Value"
                      ["expectedType":"DTS\eBaySDK\Types\UnboundType":private] => string(6) "string"
                    }
                  }
                  ["attachment":"DTS\eBaySDK\Types\BaseType":private] => array(2) {
                    ["data"] => NULL
                    ["mimeType"] => NULL
                  }
                }
                [1] => object(DTS\eBaySDK\Shopping\Types\NameValueListType)#65 (2) {
                  ["values":"DTS\eBaySDK\Types\BaseType":private] => array(2) {
                    ["Name"] => string(5) "Genre"
                    ["Value"] => object(DTS\eBaySDK\Types\UnboundType)#152 (5) {
                      ["data":"DTS\eBaySDK\Types\UnboundType":private] => array(1) {
                        [0] => string(16) "Sci-Fi & Fantasy"
                      }
                      ["position":"DTS\eBaySDK\Types\UnboundType":private] => int(0)
                      ["class":"DTS\eBaySDK\Types\UnboundType":private] => string(44) "DTS\eBaySDK\Shopping\Types\NameValueListType"
                      ["property":"DTS\eBaySDK\Types\UnboundType":private] => string(5) "Value"
                      ["expectedType":"DTS\eBaySDK\Types\UnboundType":private] => string(6) "string"
                    }
                  }
                  ["attachment":"DTS\eBaySDK\Types\BaseType":private] => array(2) {
                    ["data"] => NULL
                    ["mimeType"] => NULL
                  }
                }
                [2] => object(DTS\eBaySDK\Shopping\Types\NameValueListType)#180 (2) {
                  ["values":"DTS\eBaySDK\Types\BaseType":private] => array(2) {
                    ["Name"] => string(7) "Edition"
                    ["Value"] => object(DTS\eBaySDK\Types\UnboundType)#253 (5) {
                      ["data":"DTS\eBaySDK\Types\UnboundType":private] => array(1) {
                        [0] => string(10) "Widescreen"
                      }
                      ["position":"DTS\eBaySDK\Types\UnboundType":private] => int(0)
                      ["class":"DTS\eBaySDK\Types\UnboundType":private] => string(44) "DTS\eBaySDK\Shopping\Types\NameValueListType"
                      ["property":"DTS\eBaySDK\Types\UnboundType":private] => string(5) "Value"
                      ["expectedType":"DTS\eBaySDK\Types\UnboundType":private] => string(6) "string"
                    }

所以在我的控制器中,我输入了以下信息:

$event = array();
            foreach($item->ItemSpecifics->NameValueList as $data){
                $event[] = $data;
            }

我使用以下方式设置数据:->setCollection($event)

在我的 html 页面(视图)中,我使用了:

<?php $res = $this->getCollection() ?>
<?php foreach ($res as $row)
{
    echo "<tr id='0' class='0'>
                    <td>
                        <div class='name'>" . $row->Name . " </div>
                    </td>
                    <td>
                        <div class='value'>" . $row->Value . " </div>
                    </td>
                </tr>";
} ?>

但我的问题是仅检索了 NAME 中包含的数据。 Value 中的信息不会检索到视图中。只是为了更清楚地举一个例子。显示信息 = FORMAT,但不显示 DVD/HD-DVD。

["Name"] => string(6) "Format"
                        ["Value"] => object(DTS\eBaySDK\Types\UnboundType)#191 (5) {
                          ["data":"DTS\eBaySDK\Types\UnboundType":private] => array(1) {
                            [0] => string(10) "DVD/HD-DVD"
                          }

【问题讨论】:

    标签: php arrays xml


    【解决方案1】:

    -&gt;Value 是一个对象,-&gt;Value-&gt;data 属性被标记为私有。这意味着您不能从外部读取它(不进行反射),而是需要调用相关方法来读取它的值。查看 UnboundType 的实现,我们看到您应该能够像读取数组一样读取 ->Value 对象(它们实现了 ArrayAccess 接口)。你想要的数据在位置 0 所以试试这个:

    $row->Value[0]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-03
      • 2017-11-13
      • 2015-02-03
      • 2012-07-11
      • 1970-01-01
      相关资源
      最近更新 更多