
PHP5でXMLのテストをしているのですが、わからないことがあります。
--- test.xml
<A>
<B>
<C>TEST</C>
<D>
<E>1</E>
<F>2</F>
<G>3</G>
</D>
</B>
</A>
<?php
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->Load('test.xml');
$xpath = new DOMXPath($doc);
$query = '//A/B/D/E';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
echo "$entry->nodeValue\n";
}
で1が返されますが、
$query = '//A/B/D/E';
で、Eのノードを決め打ちしているので、foreachで回すのが気に入らないのですが
この方法が一般的でしょうか?
$e = なんとか??;
で$entries = $xpath->query($query);
のあと、取得できないでしょうか?
あと、クエリという使い方で例えば2以上データを取得する
この場合はF,Gの要素を取得するクエリの記述方法が知りたいです。
No.1ベストアンサー
- 回答日時:
>$e = なんとか??;
http://www.php.net/manual/en/domxpath.query.php
DOMXPath::query()の戻り値はDOMNodeListであり、
http://www.php.net/manual/en/class.domnodelist.php
DOMNodeListはitemメソッドを持つので
$e = $xpath->query($query)->item(0);
print($xpath->query($query)->item(0)->nodeValue);
のような記述は可能でしょう、という返答でいいのかな?
>例えば2以上データを取得する
それはつまり,
<A>
<B>
<C>TEST</C>
<D>
<E>3</E>
<F>4</F>
<G>3</G>
<H>5</H>
</D>
</B>
</A>
$query = '//A/B/D/*[number(text()) < 4]';
とかやったときに4未満の要素である
E,Gが含まれるDOMNodeListが返ってくるという話だよね?
'//A/B/D/*[position() > 2]';
で2番目以降のG,Hが含まれる要素、ってんじゃないよね?
#詳しい話は
XPath 1.0
http://www.w3.org/TR/xpath
でも読んでね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのheader("Location:#pos")...
-
セッション関数を使わずにファ...
-
SplFileObject を利用したとき...
-
PHP8でWarning:Undefined varia...
-
PHP8を使うと、大量のWarningが...
-
フォームで戻った際に入力済み...
-
PHPで画像の渡しが上手く行きま...
-
$filePath = './user_img/' . $...
-
php ラジオボタン
-
composerをインストールしたい...
-
phpの問い合わせフォームを作っ...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
HTML PHP ラジオボタンのイベント
-
php でqiitaのサイトにあったフ...
-
PHPの勉強してます。 配列のと...
-
BASIC認証のフォームをデザイン...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
掲示板の$_GETで質問があります。
-
sqlで日付が一番古いデータの月...
-
クライアントが要求したhtmlを...
-
インクルードした部分が表示さ...
-
PHPでRSSつかって地震情報取得...
-
現在の観覧人数を表示したい
-
MySQLのdatetime型の月日0を削...
-
バージョン情報の取得方法について
-
ファイル書き込みでたまにデー...
-
TwitterのURLからツイート内容...
-
指定した期間の日付生成
-
OpenPNEでのGoogleマップAPIに...
-
rewrite→リダイレクトURL→パラ...
-
PHP5 XML クエリ
-
3ヶ月後の日時を取得する方法
-
ポータルサイトの店舗単位のア...
-
PHPを狙う新たなワームが出現!?
-
phpでキーワードのマッチング処理
-
拡張子PHP3のスクリプトを...
-
phpのheader("Location:#pos")...
おすすめ情報