※ ChatGPTを利用し、要約された質問です(原文:XMLにおける同名異種のタグを区別して、そのコンテンツを取り出すには?)
XMLで同名異種のタグを区別してコンテンツを取得する方法
このQ&Aのポイント
XMLで同名異種のタグを区別してコンテンツを取得する方法について解説します。
getElementByTagNameを使用して<neko>タグの中身を取得する際、<animal>の中にある<neko>の中身を取得する方法を紹介します。
DOMを使用することで、<neko>タグの中身を取得することが可能です。正規表現は最終手段として使用されることがあります。
XMLにおける同名異種のタグを区別して、そのコンテンツを取り出すには?
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
お礼
XPathを使う方法があるんですね、ありがとうございます。 おかげさまで、なんとかなりそうです。 あと1つ、お聞きしたいのですが、 <neko>までの階層が深い場合、 /root//animal/neko のようなパス表記は、どのようにすべきでしょうか? <root> <ikimono> <honyurui> <ke_bukai> <nekoka> <animal> <neko>ペルシャ</neko> ~~略~~ </root> なんて場合です。 さらに、実際のXMLの階層構造は複雑で、 ルートから見て、目的の要素が、何階層下かが分かりにくいなんて場合を想定して 回答頂けると助かります。 宜しくお願い致します。