0

私はこのツイッターフィードを持っています。元のツイートへのリンクを解析しようとしています。その最初entryfeed. 最初の要素の属性http://twitter.com/shiplu/statuses/220057421899505664内のURLを取得したい。hreflink

このxpathを使用しました/feed/entry[0]/link[@rel = "alternate" and @type = "text/html"]

しかし、空の文字列を返します。

コードは次のようになります。

$link = $xml->xpath('/feed/entry[0]/link[@rel = "alternate" and @type = "text/html"]');

私はほとんどそこにいると思います。ここで私が間違っていることを誰でも修正できますか。

4

3 に答える 3

1

ご指摘のフィードには名前空間が含まれています。Xpath 式では、名前空間も考慮する必要があります。以下は、目的の href に一致する、長いものの完全に機能する式の 1 つです。

((/*[namespace-uri()='http://www.w3.org/2005/Atom' and contains(name(),'feed')]/*[namespace-uri()='http://www.w3.org/2005/Atom' and contains(name(),'entry')])[1]/*[namespace-uri()='http://www.w3.org/2005/Atom' and contains(name(),'link') and @rel='alternate' and @type='text/html'] )[1]/@href

于 2012-07-03T16:21:35.313 に答える
1

編集-以下のVamanコメントに基づいて回答を修正

XPath ノード番号は 1 から始まります。さらに、そのフィードは名前空間を持つ Atom 形式を使用します。次のようにする必要があります。

/atom:feed/atom:entry[1]/atom:link[@rel = "alternate" and @type = "text/html"]

プレフィックスは次の使用atomに関連付けられています。http://www.w3.org/2005/Atom

$xml->registerXPathNamespace('atom', 'http://www.w3.org/2005/Atom'); 
于 2012-07-03T13:23:10.030 に答える
0

これはあなたのために働くはずです:/feed/entry[1]/link[@rel = "alternate"]

于 2012-07-03T13:26:09.767 に答える