0

SimpleXmlObject の要素にアクセスしようとして立ち往生しています。「applicationID」だけにアクセスする必要がありますが、アクセスできません。次のコードから SimpleXmlObject を正常に作成しました: (10 個の応答ドキュメントのうち 9 個を切り捨てました)

<response>
    <lst name='responseHeader'>
      <int name='status'>0</int>
      <lst name='params'>
        <str name='q'>applicationDateAdded:NOW()-1</str>
        <str name='wt'>xml</str>
      </lst>
    </lst>
    <result name='response' numFound='10' start='0'>
      <doc>
        <date name='applicationDateAdd'>2012-02-28T16:00:00Z</date>
        <arr name='applicationDescript'>
          <str>description</str>
          <str>desc</str>
        </arr>
        <bool name='applicationFeatured'>false</bool>
        <str name='applicationId'>APPID-00000000017</str>
        <str name='id'>APPID-00000000017</str>
        <str name='type'>APPLICATION</str>
      </doc>
      <doc>...</doc>
      <doc>...</doc>
      <doc>...</doc>
      <doc>...</doc>
      <doc>...</doc>
      <doc>...</doc>
      <doc>...</doc>
      <doc>...</doc>
      <doc>...</doc>
    </result>
</response>
4

2 に答える 2

1

ご協力ありがとうございました!約1か月前に解決しました(そして、今までここに投稿したことを忘れていました)。私のソリューションは少し幼稚で、私のニーズに合わせてカスタマイズされていますが、同様の問題を抱えている人を喜んで支援します. 以下はループして、各属性の値を取得します。

// $results is the SimpleXmlElement object at the beginning
$numFound = $results -> attributes() -> numFound;
  echo "Number of Results found: ";
  echo $numFound;
  echo '<br><br>';

  if ($numFound > 0) {
     foreach($results -> children() as $content) {
        echo '<br>------------------------<br>';
        foreach ($content -> children() as $sub) {
      $attName = $sub -> attributes();
      echo $attName[0]." = ";
      $count = 0;
      foreach($sub -> children() as $val) {
        $val = $sub -> str[$count++];
        echo $val;
            echo '<br>';
      }
      echo '<br>';
        }
     }
  }
于 2012-05-07T17:04:32.253 に答える
0

これにより、各 applicationId の値がエコーアウトされます (XML 文字列が にあると仮定します$xml)。

$xmlObj = simplexml_load_string($xml);

foreach($xmlObj->result->doc as $doc)
{
    foreach($doc->str as $str)
    {
        if($str->attributes()->name == 'applicationId')
        {
            echo 'applicationId: ' . (string)$str . '<br />';
            break 1;
        }
    }
}
于 2012-03-19T18:48:34.417 に答える