0

Simple XML を使用して、変数に格納された XML データを解析したいと考えています。

これは私が話しているデータです:

<SearchResults:searchresults xsi:schemaLocation="http://www.zillow.com/static/xsd/SearchResults.xsd /vstatic/ae1bf8a790b67ef2e902d2bc04046f02/static/xsd/SearchResults.xsd">
    <request>
        <address>2114 Bigelow Ave</address>
        <citystatezip>Seattle, WA</citystatezip>
    </request>
    <message>
        <text>Request successfully processed</text>
        <code>0</code>
    </message>
    <response>
        <results>
            <result>
                <zpid>48749425</zpid>
                <links>
                    <homedetails>http://www.zillow.com/homedetails/2114-Bigelow-Ave-N-Seattle-WA-98109/48749425_zpid/</homedetails>
                    <graphsanddata>http://www.zillow.com/homedetails/charts/48749425_zpid,1year_chartDuration/?cbt=7522682882544325802%7E9%7EY2EzX18jtvYTCel5PgJtPY1pmDDLxGDZXzsfRy49lJvCnZ4bh7Fi9w**</graphsanddata>
                    <mapthishome>http://www.zillow.com/homes/map/48749425_zpid/</mapthishome>
                    <comparables>http://www.zillow.com/homes/comps/48749425_zpid/</comparables>
                </links>
                <address>
                    <street>2114 Bigelow Ave N</street>
                    <zipcode>98109</zipcode>
                    <city>Seattle</city>
                    <state>WA</state>
                    <latitude>47.63793</latitude>
                    <longitude>-122.347936</longitude>
                </address>
                <zestimate>
                    <amount currency="USD">1219500</amount>
                    <last-updated>11/03/2009</last-updated>
                    <oneWeekChange deprecated="true"/>
                    <valueChange duration="30" currency="USD">-41500</valueChange>
                    <valuationRange>
                        <low currency="USD">1024380</low>
                        <high currency="USD">1378035</high>
                    </valuationRange>
                    <percentile>0</percentile>
                </zestimate>
                <localRealEstate>
                    <region id="271856" type="neighborhood" name="East Queen Anne">
                        <zindexValue>525,397</zindexValue>
                        <zindexOneYearChange>-0.144</zindexOneYearChange>
                        <links>
                            <overview>http://www.zillow.com/local-info/WA-Seattle/East-Queen-Anne/r_271856/</overview>
                            <forSaleByOwner>http://www.zillow.com/homes/fsbo/East-Queen-Anne-Seattle-WA/</forSaleByOwner>
                            <forSale>http://www.zillow.com/east-queen-anne-seattle-wa/</forSale>
                        </links>
                    </region>
                    <region id="16037" type="city" name="Seattle">
                        <zindexValue>381,764</zindexValue>
                        <zindexOneYearChange>-0.074</zindexOneYearChange>
                        <links>
                            <overview>http://www.zillow.com/local-info/WA-Seattle/r_16037/</overview>
                            <forSaleByOwner>http://www.zillow.com/homes/fsbo/Seattle-WA/</forSaleByOwner>
                            <forSale>http://www.zillow.com/seattle-wa/</forSale>
                        </links>
                    </region>
                    <region id="59" type="state" name="Washington">
                        <zindexValue>263,278</zindexValue>
                        <zindexOneYearChange>-0.066</zindexOneYearChange>
                        <links>
                            <overview>http://www.zillow.com/local-info/WA-home-value/r_59/</overview>
                            <forSaleByOwner>http://www.zillow.com/homes/fsbo/WA/</forSaleByOwner>
                            <forSale>http://www.zillow.com/wa/</forSale>
                        </links>
                    </region>
                </localRealEstate>
            </result>
        </results>
    </response>
</SearchResults:searchresults>

上記のタイプの XML は、名前付きの変数に格納されます。$zillow_data

まず、コードを使用して SimpleXML を使用してロードします

$xml = simplexml_load_string($zillow_data);

ここで、上記の XML データに示されている「メッセージ」値を取得したいと考えています。

やってみると

foreach($xml->message[0]->text[0] as $response)

それは動作しません。

以下のコードのようなものを試すと、Netbeans IDE でエラーが発生します

foreach($xml->SearchResults:searchresults[0]->message[0]->text[0] as $response)

私が得るエラーは「予期しない:」です

上記の XML データでメッセージを正しく取得するにはどうすればよいですか?

また、すべての「結果」要素を 1 つずつ解析するにはどうすればよいですか?

4

1 に答える 1

0

コードを使用する場合:

$xml = simplexml_load_string($string);

$string変数に XML が含まれている間、最初の要素<SearchResults:searchresults>がメインの$xmlSimpleXMLElement オブジェクトになり、子タグ<request>とがそのプロパティに<message>なります。<response>

したがって、警告を忘れて、次のundefined namespaceことができるはずです。

foreach($xml->response->results->result as $result) {
    echo (string) $result->zpid;
}

要素が1つmessageしかないtextため、これをエコーし​​たい場合は、次のようにするだけです。

echo (string) $xml->message->text;

var_dump($xml);SimpleXML を使用して XML 構造を読み込んだ後、オブジェクトと配列に変換される XML 構造を理解するためにaを実行します。

于 2013-06-06T14:31:57.590 に答える