私はxpathを初めて使い、PHPの古くからのXPath実装で問題を抱えています。それは正しいですか?//@url
はちょうど//attribute::url
の省略形ですか?私はテストのためのFlickrのRSSを照会しようとしているが、冗長1が0の要素を返すのに対し、省略クエリは、正しいノードを検索します。PHPのxpathで属性値を選択する
$xml = file_get_contents('http://api.flickr.com/services/feeds/geo/?format=rss_200');
$doc = new DOMDocument();
$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
$xpath->query('//media:content/@url')->length > 0;
$xpath->query('//media:content/attribute::url')->length == 0;
私はw3c specsを誤解したのか、これはPHPのバグですか?
関連質問:
期待通りに成功したクエリがDOMAttr
オブジェクトを返します。しかし、これらのノードのテキスト値を直接取得する方法はありませんか?何か//media:content/attribute::url/child::text()
のようなもの? XPathクエリがユーザーによって入力されるツールでは、DOMTextオブジェクト(DOM *オブジェクトの多数をコーディングするのではなく)が期待できる場合、エラー検出がはるかに優れているツールが必要です。
Thxですが、evaluate()を使用しても役に立ちませんでした。私は名前空間も追加しようとしました。成功しませんでした。私は確かに分かっていませんが、とにかくPHPによって名前空間が文書から抽出されると思います。その場合は – soulmerge
、省略形にしてください。私は、多くの場合(例えばdescendant-or-selfのような)冗長なフォーマットを好む傾向がありますが、冗長属性:: axisを使用しようとしたとは言えません。 –
実際にテストしてくれてありがとう:) – soulmerge