1

次の出力があります。

<table count="" time="0.010006904602051">
<item>
<id>607</id>
<name>MSPOT6071</name>
<description>Hip Hop / Raps</description>
<type>3</type>
<radio_folder_id/>
<albumart>
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_175.jpg
</albumart>
<albumart_300>
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_350.jpg
</albumart_300>
<albumart_500>
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_500.jpg
</albumart_500>
</item>
<item>
<id>48542614</id>
<name>US Pop - TESTB</name>
<description>Blues</description>
<type>3</type>
<radio_folder_id/>
</item>
</table>

この出力をキー値ペアの形式で読み取り、各値を保存したいと考えています。たとえば、「名前」の値が必要です

誰でもコードを手伝ってもらえますか..どうすればいいのかわかりません。

4

2 に答える 2

2

simplexml 拡張関数を使用して、目標を達成できます。この拡張機能を使用すると、ファイル文字列、またはhtml ノードから xml をロードできます。各ロード関数の詳細については、リンクをたどってください。ここでは、simplexml_load_file を使用してロードする方法を説明します。このコード:

<?php
echo "<pre>";   
$xml = simplexml_load_file("name.xml");
    print_r($xml);
    echo "</pre>";

?>

これを返します:

SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [count] => 
            [time] => 0.011766910552979
        )

    [item] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [id] => 607
                    [name] => MSPOT6071
                    [description] => Hip Hop / Raps
                    [type] => 3
                    [radio_folder_id] => SimpleXMLElement Object
                        (
                        )

                    [albumart] => http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_175.jpg
                    [albumart_300] => http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_350.jpg
                    [albumart_500] => http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_500.jpg
                )

            [1] => SimpleXMLElement Object
                (
                    [id] => 48542614
                    [name] => US Pop - TESTB
                    [description] => Blues 
                    [type] => 3
                    [radio_folder_id] => SimpleXMLElement Object
                        (
                        )

                )

        )

)

必要な情報には、次のようにアクセスできます。

<?php
echo "<pre>";   
$xml = simplexml_load_file("name.xml");
    print_r($xml);
    echo "</pre>";
    echo "<pre>";
    foreach($xml->children() as $item){
        $arr = get_object_vars($item);
        foreach($arr as $key=>$value){
            echo "$key => $value" . PHP_EOL;            
        }
    }
    echo "</pre>";
?>

最初にオブジェクトとしてアクセスされることに注意してください。次に、すべてのオブジェクト変数を取得して、オブジェクト属性を動的にナビゲートできます。

于 2013-05-14T01:10:43.473 に答える
0

<?php

$xmlstr = '<?xml version="1.0" standalone="yes"?>
<table count="" time="0.010006904602051">
<item>
<id>607</id>
<name>MSPOT6071</name>
<description>Hip Hop / Raps</description>
<type>3</type>
<radio_folder_id/>
<albumart>
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_175.jpg
</albumart>
<albumart_300>
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_350.jpg
</albumart_300>
<albumart_500>
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_500.jpg
</albumart_500>
</item>
<item>
<id>48542614</id>
<name>US Pop - TESTB</name>
<description>Blues</description>
<type>3</type>
<radio_folder_id/>
</item>
</table>';

$xml = new SimpleXMLElement($xmlstr);

foreach($xml->item as $item)
{
    echo $item->name."<br>";
}

echo $xml->item[0]->name;

echo '<pre>';
print_r($xml);
echo '</pre>';

?>

XML 文字列を変数 $xmlstr に割り当て、不完全な XML ドキュメント エラーが発生しないように、XML ドキュメントの先頭に次の内容を含めてください。

<?xml version="1.0" standalone="yes"?> 

次に、組み込みの SimpleXML クラスを使用して、XML 文字列 $xmlstr を SimpleXML に渡します。

$xml = new SimpleXMLElement($xmlstr);

SimpleXML クラスの属性とメソッドを使用して、XML ファイルに PHP オブジェクトとしてアクセスできるようになりました。この例では、XML ドキュメント内の「item」をループし、「name」要素を出力します。

foreach($xml->item as $item)
{
    echo $item->name."<br>";
}

最初の item 要素にアクセスするためのコードも含めました。

echo $xml->item[0]->name;

いくつかのデバッグ コードと同様に、SimpleXML オブジェクトで XML ドキュメントを表示します。

echo '<pre>';
print_r($xml);
echo '</pre>';

キー、またはこの場合はオブジェクト プロパティにその名前でアクセスします。したがって、 foreach ループで次のようにすることができます。

if($item->name)
{
    echo $item->name;
}

また

if($item->description)
{
    echo $item->description;
}

力があなたと共にありますように。

于 2013-05-14T01:19:19.677 に答える