2009-10-20 11 views
6

の属性を取得こんにちは、私はこのようなアイテムのシリーズとXML形式のAPIレスポンスを持っている:PHPのDOMDocumentは、Tag

<item> 
<title>blah balh</title> 
<pubDate>Tue, 20 Oct 2009 </pubDate> 
<media:file date="today" data="example text string"/> 
</item> 

私はタグから属性「データ」を取得するためのDOMDocumentを使用したいです」メディア:ファイル "。私の試行はうまくいきません。

$xmldoc = new DOMDocument(); 
$xmldoc->load('api response address'); 
foreach ($xmldoc->getElementsByTagName('item') as $feeditem) { 
$nodes = $feeditem->getElementsByTagName('media:file'); 
$linkthumb = $nodes->item(0)->getAttribute('data'); 
} 

私は間違っていますか?助けてください。

編集:何らかの理由でコメントを残すことはできません。エラーが発生する

Call to a member function getAttribute() on a non-object 

コードを実行するとエラーが発生します。私も試しました

$nodes = $feeditem->getElementsByTagNameNS('uri','file'); 
$linkthumb = $nodes->item(0)->getAttribute('data'); 

ここで、uriはメディアネームスペース(NS)に関連するURIですが、同じ問題です。

メディア要素は、私が一般的にアティビュートの解析に問題がないので、これは問題の一部ではないと考えています。

答えて

8

入力した例ではエラーが発生しません。私はそれをテストし、それ以外のDOMDocumentが出てエラーになります返されるXMLで定義されている

メディア名前空間を確認し

を期待通りの$ linkthumbは、文字列「例のテキスト文字列」を含んでいました。

あなたが特定のエラーを取得している場合は、それを含めるように自分の投稿を編集してください

編集:

すると、次のコードを試してください:あなたはまた、SimpleXMLを見てみたいことがあり

$xmldoc = new DOMDocument(); 
$xmldoc->load('api response address'); 
foreach ($xmldoc->getElementsByTagName('item') as $feeditem) { 
    $nodes = $feeditem->getElementsByTagName('file'); 
    $linkthumb = $nodes->item(0)->getAttribute('data'); 
    echo $linkthumb; 
} 

をし、 Xpath DOMDocumentよりもはるかに簡単にXMLを読むことができます。

+0

。 ありがとうございます! –

3

また、余分なコードをやった

$DOMNode -> attributes -> getNamedItem('MyAttribute') -> value; 
関連する問題