0

「それほど普通ではない」XML Web サービスを解析しようとしています。Web サービスは、その文字列内に XML を含む文字列を返しているようです。

XML は次のようになります。

<string>
  <NewDataSet>
    <Table>
      <CATID>0</CATID>
      <DEPID>0</DEPID>
    </Table>
    <Table>
      <CATID>1</CATID>
      <DEPID>1</DEPID>
    </Table>
  </NewDataSet>
<string>

これは現在の私のコードです。すでに多くのバリエーションを試しましたが、何も機能しません。ほとんどの場合、何も返されません。$xml をエコーすると、すべての XML が返されますが、表示する必要があるのは CATID だけで、他には何もありません。

<?php

$file = file_get_contents('http://theWebSericeLink.here');
$xml = simplexml_load_string($file);

 //echo $xml;
 foreach($xml->Table as $item) {
   echo $item->CATID;
 }
?>

私も試しました:

   foreach($xml->NewDataSet->Table as $item)

   foreach($xml->String->NewDataSet->Table as $item)

前もって感謝します。

4

4 に答える 4

1

これを試して

<?php
$k = '<string>
    <NewDataSet>
        <Table>
          <CATID>0</CATID>
          <DEPID>0</DEPID>
        </Table>
        <Table>
          <CATID>1</CATID>
          <DEPID>0</DEPID>
        </Table>
    </NewDataSet>
</string>';
$xml = simplexml_load_string($k);

   foreach($xml->NewDataSet->Table as $read){       
     echo $read->CATID."<br>";
    }
?>

出力

0
1
于 2013-08-30T14:10:18.157 に答える
0

私はそれを考え出した。

foreach 関数の前に、Web サービスが返す「xml 文字列」から xml ファイルを作成しました。

$xml = simplexml_load_string($file);
$feed = '<?xml version="1.0" encoding="ISO-8859-1"?>'.$xml;

file_put_contents("workhorse.xml", $feed);
$myxml=simplexml_load_file("workhorse.xml");
于 2013-09-03T15:02:01.120 に答える
0

エコーしたときに XML が表示される場合は、xpath を使用する必要があります。

$id = $xml->xpath('/table/CATID'); 
于 2013-08-30T14:03:47.730 に答える