2

こんにちは、私は xml を使用したことがありませんが、今すぐ使用する必要があるため、すぐに学習しようとしていますが、私が考える構造に苦労しています。これは、誰かのウェブサイトのトップに天気を表示するためのものです。

このxmlリンクを使用してメルボルンの天気を表示したいftp://ftp2.bom.gov.au/anon/gen/fwo/IDV10753.xml

基本的に、私は3日間のメルボルンの予測を取得しようとしています(機能するものは何でも)予測期間配列[0]から[6]があります

この print_r を使用して構造を表示しました。

$url = "linkhere";
$xml = simplexml_load_file($url);
echo "<pre>";
print_r($xml);

何かを取得するためだけにこれを試しました:

$url = "linkhere";
$xml = simplexml_load_file($url);

$data = (string) $xml->forecast->area[52]->description;
echo $data;

それは私に何も与えませんでした(「メルボルン」を期待していました)、明らかに私は学ぶ必要があり、私は学んでいますが、誰かがそれを助けることができればそれは素晴らしいことです.

4

2 に答える 2

0

descriptionは の属性であるため<area>、使用する必要があります

$data = (string) $xml->forecast->area[52]['description'];

また、メルボルンが 52 番目のエリア ノードであることに依存するつもりもありません(ただし、これは実際にはデータ管理者次第です)。これはユニークに見えるので、そのaac属性で行きます。

$search = $xml->xpath('forecast/area[@aac="VIC_PT042"]');
if (count($search)) {
    $melbourne = $search[0];
    echo $melbourne['description'];
}
于 2013-09-30T04:19:20.680 に答える
0

これはあなたのための実例です:

<?php

$forecastdata = simplexml_load_file('ftp://ftp2.bom.gov.au/anon/gen/fwo/IDV10753.xml','SimpleXMLElement',LIBXML_NOCDATA);

    foreach($forecastdata->forecast->area as $singleregion) {
    $area = $singleregion['description'];
    $weather = $singleregion->{'forecast-period'}->text;
    echo $area.': '.$weather.'<hr />';  
    }

?>

前述の例を編集して、必要なタグと属性を抽出できます。

XML オブジェクトの構造を理解するには、次のようにコンテンツを出力することをお勧めします。print_r

あなたが提案した XML の特定のケースでは、都市は属性 ( description ) によって指定されます。このため、['attribute name'] を使用してこれらの属性も読み取る必要があります (詳細については、こちらを参照してください)。

タグ{'forecast-period'}が中かっこで囲まれているため、ハイフンが含まれていることにも注意してください。そうしないと、エラーが発生します。

于 2013-09-30T05:01:12.497 に答える