2016-06-15 8 views
0

次のnotes.xml XMLファイルがあります。ノードの値を取得するSimpleXMLとxpath

<?xml version="1.0" encoding="UTF-8"?> 
<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body> 
</note> 

そして、このPHPスクリプト

<?php 
    $xml = simplexml_load_file('notes.xml'); 
    $result = $xml->xpath('//to'); 
    print_r($result); 
    echo "<br>"; 
    echo $result; 
?> 

次に、なぜ出力は以下の通りでありますか?あなたのXMLに複数の<to>タグが存在する可能性があるため

Array ([0] => SimpleXMLElement Object ()) 
Array 

答えて

1
$result = $xml->xpath('//to'); 

(トーベ値はありません)これは、あなたにSimpleXMLElementオブジェクトの配列を返します。テキストを抽出するには、使用する必要があります。

echo (string) $result[0]; 

文字列にキャストすると、タグからテキストコンテンツが返されます。あなたのXMLは、常にその単純な場合

することは、あなたも

$result = (string) $xml->to; 
2

を使用することができますthe manual for the SimpleXMLElement::xpath methodを見てください。常に0個以上のオブジェクトの配列を返します。SimpleXMLElementオブジェクト。

echoアレイ(配列)の場合は、Arrayという単語が表示されます。

あなたechoSimpleXMLElementオブジェクト場合は、自動的にthe basic SimpleXML examplesに示すように、あなたは、echo $fooの代わりにecho (string)$fooを書いたかのように(文字列にキャストされます。

だから、内部の配列を見てする必要がありますSimpleXMLElementオブジェクトを取得し、それをエコーし​​ます。一致するものが見つからない場合、配列は空になります。

関連する問題