
XMLにおける同名異種のタグを区別して、そのコンテンツを取り出すには?
<?xml version='1.0'?>
<root>
<animal>
<neko>ペルシャ</neko>
</animal>
<pet>
<neko>三毛</neko>
</pet>
</root>
上記コードから、
getElementByTagName('neko')のようにして、
<neko>タグの中身を取得したいのですが、
ただ、取得したいのは、<animal>の中にある<neko>の中身であって、
<pet>の中にある<neko>の中身ではないんです。
こういった場合、同じ<neko>でも区別して、中身を取得する方法はありますか?
方法としては、DOM的に取得したいと思っています。
つまり、正規表現で云々というのは、最終手段としたいわけです。
おそらく、初歩的な質問だとは思いますが、
どうか宜しくお願い致します。
環境:PHP5
No.1ベストアンサー
- 回答日時:
=============Q5969855-1.xml================
<?xml version='1.0'?>
<root>
<animal>
<neko>ペルシャ</neko>
</animal>
<pet>
<neko>三毛</neko>
</pet>
<x>
<animal>
<neko>ぶち</neko>
</animal>
</x>
</root>
==============Q5969855-1.php050302================
<?php
header("Content-Type:text/plain;charset=UTF-8");
$doc = new DOMDocument();
$doc->load("Q5969855-1.xml");
$xpath = new DOMXPath($doc);
$nodelist = $xpath->query("/root/animal/neko");
print("a\n");
for ($i = 0; $i < $nodelist->length; $i++) {
echo $nodelist->item($i)->textContent . "\n";
}
print("b\n");
$nodelist = $xpath->query("/root//animal/neko");
for ($i = 0; $i < $nodelist->length; $i++) {
print($nodelist->item($i)->textContent . "\n");
}
?>
===================出力結果=================
a
ペルシャ
b
ペルシャ
ぶち
XPathを使う方法があるんですね、ありがとうございます。
おかげさまで、なんとかなりそうです。
あと1つ、お聞きしたいのですが、
<neko>までの階層が深い場合、
/root//animal/neko
のようなパス表記は、どのようにすべきでしょうか?
<root>
<ikimono>
<honyurui>
<ke_bukai>
<nekoka>
<animal>
<neko>ペルシャ</neko>
~~略~~
</root>
なんて場合です。
さらに、実際のXMLの階層構造は複雑で、
ルートから見て、目的の要素が、何階層下かが分かりにくいなんて場合を想定して
回答頂けると助かります。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sqlで日付が一番古いデータの月...
-
phpのheader("Location:#pos")...
-
PHPのif文でその処理を途中で抜...
-
.htaccessにphp_valueが使用できな
-
mysql→EUC-JP、php→UTF-8の時の...
-
2つの画像ファイルが異なるファ...
-
require_once()でファイルが読...
-
phpの中でphpを書けないか
-
FTPコマンドでディレクトリごと...
-
MkDir関数
-
【file_exists】ファイルが存在...
-
フォームで戻った際に入力済み...
-
<A href ~ と一緒に値を渡すには
-
テレメールとは?
-
「クラス関数」「メンバ関数」...
-
Makefile.inとMakefile.am
-
現在位置より2つ上のディレク...
-
さくらインターネットでメール...
-
PHPでメールを受信するには?
-
phpのextension_dirを複数指定...
マンスリーランキングこのカテゴリの人気マンスリー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")...
おすすめ情報