2011-12-11 1 views
0

SimpleXMLElementオブジェクトから必要なデータを抽出する際に問題が発生します。ここで私が使用していたコードの基礎である:cURLとsimpleXMLElementを使用してデータを抽出します。 XPATHの後にXML要素の値を取得するにはどうすればよいですか?

curl_setopt($ch, CURLOPT_URL, $URL); 
$html = curl_exec($ch); 
$html = $tidy->parseString($html, $tc, 'utf8'); 
$tidy->cleanRepair(); 
$html = $tidy->body()->value; 
$xml = new SimpleXMLElement($html); 

$xml = $xml->xpath("//ul[@id='wxoptions']/li[3]/a"); //Your XPATH 

print_r($xml); 

これは私が欲しい正しいHTML要素にナビゲートしますが、印刷物:

Array 
(
    [0] => SimpleXMLElement Object 
     (
      [@attributes] => Array 
       (
        [href] => http://www.mylink.com 
        [title] => mylink 
       ) 

      [0] => mylink 
     ) 

) 

私が必要とする値が「http://www.mylink.com [HREF]です"その配列で。私はそれをどのように抽出するのですか?私は困惑していて、SimpleXMLElementとXpathを非常に新しくしています。

+1

注意3]/a/@ href' –

+0

ありがとう!これは本当に役に立ちます – dremme

答えて

0

使用反復、およびattributes

foreach ($xml->xpath("//ul[@id='wxoptions']/li[3]/a") as $node) 
{ 
    $href = $node->attributes("href"); 
} 

または直接呼び出さ: `// UL [ID @ = 'wxoptions'] /李[:あなたもattibuteの直接を選択することができ

$href = $xml[0]->attributes("href"); 
+0

私はこれらのアプローチの両方を使って試しました: '$ xml = $ xml-> xpath(" // ul [@ id = 'wxoptions']/li [3]/a "); $ href = $ xml [0] - >属性( "href"); ' これは空のSimpleXMLElementオブジェクトを$ hrefに返します。 – dremme

+0

あなたはどの方法を使用したかを明確にするだけですか? (あなたがコメントで言及したのは間違った使い方です) – ajreal

+0

また、XMLの例を含めることはできますか? – ajreal

関連する問題