1

以下のXMLを解析して、必要な出力を取得するのに問題があります。以下のXMLをCommissionJunctionから取得していますが、出力を制御できません。

<cj-api>
   <advertisers total-matched="609" records-returned="10" page-number="1">
      <advertiser>
         <advertiser-id>2283</advertiser-id>
         <account-status>Active</account-status>
         <seven-day-epc>0.00</seven-day-epc>
         <three-month-epc>1.11</three-month-epc>
         <language>en</language>
         <advertiser-name>
            Name here
         </advertiser-name>
         <program-url>http://website.com/</program-url>
         <relationship-status>joined</relationship-status>
         <mobile-tracking-certified>false</mobile-tracking-certified>
         <network-rank>1</network-rank>
         <primary-category>
            <parent>Financial Services</parent>
            <child>Loans</child>
         </primary-category>
         <performance-incentives>false</performance-incentives>
         <actions>
            <action>
               <name>Sale</name>
               <type>sale</type>
               <id>120</id>
               <commission>
                  <default type="item-level">USD 15.00</default>
               </commission>
            </action>
         </actions>
         <link-types>
            <link-type>Text Link</link-type>
            <link-type>Banner</link-type>
            <link-type>Content Link</link-type>
         </link-types>
      </advertiser>
   </advertisers>
</cj-api>

cURLを使用してリクエストを送信し、レスポンスを受信して​​います。応答を印刷すると、上記のXMLが表示され、すべて良好に見えますが、以下の情報を解析しようとすると、「2283」が表示されると予想されるときに「0」が表示されます。

$xml = simplexml_load_string($response);
print $xml->{"cj-api"}->advertisers->advertiser->advertiser-id;

誰かが私が間違っていることを理解するのを手伝ってもらえますか?

私をさらに幸せにするために、誰かが各要素を独自の変数に解析する方法を教えてくれれば、私は非常に素晴らしいでしょう。

4

2 に答える 2

1

これで問題が解決するはずです。

<?php

$xml_string = <<<XML
<cj-api>
   <advertisers total-matched="609" records-returned="10" page-number="1">
      <advertiser>
         <advertiser-id>2283</advertiser-id>
         <account-status>Active</account-status>
         <seven-day-epc>0.00</seven-day-epc>
         <three-month-epc>1.11</three-month-epc>
         <language>en</language>
         <advertiser-name>
            Name here
         </advertiser-name>
         <program-url>http://website.com/</program-url>
         <relationship-status>joined</relationship-status>
         <mobile-tracking-certified>false</mobile-tracking-certified>
         <network-rank>1</network-rank>
         <primary-category>
            <parent>Financial Services</parent>
            <child>Loans</child>
         </primary-category>
         <performance-incentives>false</performance-incentives>
         <actions>
            <action>
               <name>Sale</name>
               <type>sale</type>
               <id>120</id>
               <commission>
                  <default type="item-level">USD 15.00</default>
               </commission>
            </action>
         </actions>
         <link-types>
            <link-type>Text Link</link-type>
            <link-type>Banner</link-type>
            <link-type>Content Link</link-type>
         </link-types>
      </advertiser>
      <advertiser>
         <advertiser-id>2284</advertiser-id>
         <account-status>Not Active</account-status>
         <seven-day-epc>0.00</seven-day-epc>
         <three-month-epc>1.11</three-month-epc>
         <language>en</language>
         <advertiser-name>
            Name here
         </advertiser-name>
         <program-url>http://website.com/</program-url>
         <relationship-status>joined</relationship-status>
         <mobile-tracking-certified>false</mobile-tracking-certified>
         <network-rank>1</network-rank>
         <primary-category>
            <parent>Financial Services</parent>
            <child>Loans</child>
         </primary-category>
         <performance-incentives>false</performance-incentives>
         <actions>
            <action>
               <name>Sale</name>
               <type>sale</type>
               <id>120</id>
               <commission>
                  <default type="item-level">USD 15.00</default>
               </commission>
            </action>
         </actions>
         <link-types>
            <link-type>Text Link</link-type>
            <link-type>Banner</link-type>
            <link-type>Content Link</link-type>
         </link-types>
      </advertiser>
   </advertisers>
</cj-api>
XML;

$parse = simplexml_load_string($xml_string);
foreach($parse->advertisers->advertiser as $advertiser){
    $id = (string) $advertiser->{"advertiser-id"};
    var_dump($id);
}
?>
于 2013-02-03T20:41:54.783 に答える
1
printf("id is %s", $xml->{"advertisers"}->advertiser->{"advertiser-id"});
于 2013-02-03T21:57:49.117 に答える