ホームページ  >  記事  >  バックエンド開発  >  php の xpath に関する 2 つの小さな疑問点を教えてください。

php の xpath に関する 2 つの小さな疑問点を教えてください。

WBOY
WBOYオリジナル
2016-06-13 13:24:02889ブラウズ

php の xpath に関する 2 つの小さな問題を解決してください。
たとえば、xml ファイルは次のとおりです。











ペットの種類 (小さい) 色 (白) と年齢 (5 歳) がわかっている場合、そのペットの ID を取得するにはどのように xpath を使用すればよいですか?ペットの配下はすべて並列なので、確認した後、IDを取得するには前のレベル(ペット)に戻らなければなりません、方法がわかりません

2番目の問題は、を使用することですxpath このプロセスでは、/pet/type のようなものを使用します...php に $str="type" などの変数がある場合は、xpath に /pet/$str と書くことができます... ... ……? つまり、$str の値は type と同等です。 可能であれば、正しく完全な形式をどのように記述する必要がありますか?

-----解決策---------
最初のものは横断する必要があります。
2 番目の質問: はい、ただし次のように記述する必要があります: $xml->xpath("/pet/$str");
------解決策---------

PHP コード
[ユーザー:root 時刻:00:07:19 パス:/home/liangdong/php]$ php xpath.php
タイプ:小さい
色: 白
年齢:5
[ユーザー:root 時刻:00:07:19 パス:/home/liangdong/php]$ cat xpath.php
<?php
$str = <<<EOF
<?xml バージョン="1.0" エンコーディング="utf8" ?>
<ペット>
<ペットid="01">
  <type resource="big"/>
  <color resource="black"/>
  <年齢リソース="2"/>
</ペット>
<ペットid="02">
  <type resource="small"/>
  <color resource="white"/>
  <年齢リソース="5"/>
</ペット>
</ペット>
EOF;

$xml = simplexml_load_string($str, "SimpleXMLElement", LIBXML_NOBLANKS);
$res = $xml->xpath("/pets/pet[type[@resource='small'] and color[@resource='white'] and age[@resource='5']]");
foreach ($res as $node) {
        $children = $node->children();
        foreach ($children として $child) {
                echo $child->getName() . $child['resource'] ;
        }
}
?>
<br><font color="#e78608">------解決策---------</font><br>
PHP コード
$str = <<<EOF
<?xml バージョン="1.0" エンコーディング="utf8" ?>
<ペット>
<ペットid="01">
  <type resource="big"/>
  <color resource="black"/>
  <年齢リソース="2"/>
</ペット>
<ペットid="02">
  <type resource="small"/>
  <color resource="white"/>
  <年齢リソース="5"/>
</ペット>
</ペット>
EOF;

$xml = simplexml_load_string($str);
$res = $xml->xpath("/pets/pet[type[@resource='small'] and color[@resource='white'] and age[@resource='5']]");

echo $res[0]->attributes()->id; //02 <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。