0

外部ファイルのこの形式で php を使用して xml の配列を取得する方法

$locations = array(
  (Bondi Beach, -33.890542, 151.274856, 4),
  (Coogee Beach, -33.923036, 151.259052, 5),
  (Cronulla Beach', -34.028249, 151.157507, 3)
);
//this is my file php
         $dom = new DOMDocument();
            $dom->load('school.xml');
            $students = $dom->getElementsByTagName('student');
            $i = 0; 
            foreach ($students as $student) {
                $locations = $students->item(0)->nodeValue;
                echo $locations;
                $i++;
            }

このコードを実行すると、次の結果が返されます:
Bondi Beach -33.890542 151.274856 4 Coogee Beach -33.923036 151.259052 5 Cronulla Beach -34.028249 151.157507 3
次の形式の配列を返すには、何を変更する必要がありますか?:

これは私の配列school.xmlです

<school>
<student>
<name>Bondi Beanch</name>
<latitude>-33.890542</latitude>
<longitude>151.274856</longitude>
<id>4</id>
</student>
<student>
<name>Coogee Beach</name>
<latitude>-33.923036</latitude>
<longitude>151.259052</longitude>
<id>5</id>
</student>
<student>
<name>Cronulla Beach</name>
<latitude>-34.028249</latitude>
<longitude>151.157507</longitude>
<id>3</id>
</student>
</school>
4

3 に答える 3

1

さて、私は問題を読み違えました。これを試して。

foreach ($students as $key => $student) {
  $locations[] = array($student->childNodes->item(0)->nodeValue, $student->childNodes->item(1)->nodeValue, $student->childNodes->item(2)->nodeValue, $student->childNodes->item(3)->nodeValue);
  $i++;
}
于 2013-01-25T00:37:57.420 に答える
1
<?php
$dom = new DOMDocument();
$dom->load('school.xml');
$students = $dom->getElementsByTagName('student');
foreach ($students as $student){
    foreach($student->childNodes as $node){
        switch($node->nodeName){
            case 'name':
                $name = $node->nodeValue;
                break;
            case 'longitude':
                $long = $node->nodeValue;
                break;
            case 'latitude':
                $lat = $node->nodeValue;
                break;
            case 'id':
                $id = $node->nodeValue;
                break;
        }
    }       
    $locations[] = array($name,$lat,$long,$id);
}
echo '<pre>';
print_r($locations);
echo '</pre>';
?>

配列を連想にしたい場合は、次の行を置き換えることができます。

$locations[] = array('name'=>$name,'latitude'=>$lat,'longitude'=>$long,'id'=>$id);
于 2013-01-25T00:57:15.037 に答える
1

simplexml を試してみましたか? 外部の xml ソースからデータを呼び出すために使用していますが、うまく機能します。

$xml= simplexml_load_file('school.xml')
or Die ('ERROR: Could Not connect to File!');

foreach($xml->student as $student) {

$name = $student->name;
$latitude =  $student>latitude;
$longitude = $student->longitude;
$id = $student->id;

echo "<b>" .  "Name: " . "</b>" . $name . " <br />";
echo "<b>" .  "Latitude: " . "</b>" . $latitude . " <br />";
echo "<b>" .  "Longitude: " . "</b>" . $longitude . " <br />";
echo "<b>" .  "id: " . "</b>" . $id . " <br />";

}

すでに試したことがある場合は申し訳ありませんが、まだ試していない場合は試してみる価値があります。

于 2013-01-25T00:59:13.317 に答える