php の xpath に関する 2 つの小さな問題を解決してください。
たとえば、xml ファイルは次のとおりです。
pet>
ペットの種類 (小さい) 色 (白) と年齢 (5 歳) がわかっている場合、そのペットの ID を取得するにはどのように xpath を使用すればよいですか?ペットの配下はすべて並列なので、確認した後、IDを取得するには前のレベル(ペット)に戻らなければなりません、方法がわかりません
2番目の問題は、を使用することですxpath このプロセスでは、/pet/type のようなものを使用します...php に $str="type" などの変数がある場合は、xpath に /pet/$str と書くことができます... ... ……? つまり、$str の値は type と同等です。 可能であれば、正しく完全な形式をどのように記述する必要がありますか?
-----解決策---------
最初のものは横断する必要があります。
2 番目の質問: はい、ただし次のように記述する必要があります: $xml->xpath("/pet/$str");
------解決策---------
[ユーザー: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>
$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>