重複の可能性:
xPath は * しか検出しません
xml を使用して .COLLADA ファイルを解析しようとしています。xpath()
問題は、ルート タグに xmlns 属性がある場合、要素へのアクセスに使用できないように見えることです。
たとえば、これは機能します:
$string = <<<TEST
<?xml version="1.0" encoding="utf-8"?>
<COLLADA version="1.4.1">
<library_materials>
<material id="Material" name="Material">
<instance_effect url="#Material-effect"/>
</material>
<material id="Material2" name="Material">
<instance_effect url="#Material-effect2"/>
</material>
</library_materials>
</COLLADA>
TEST;
$lol = new SimpleXMLElement($string);
print_r($lol->library_materials->xpath("material[@id='Material2']"));
しかし、これはしません:
$string = <<<TEST
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<library_materials>
<material id="Material" name="Material">
<instance_effect url="#Material-effect"/>
</material>
<material id="Material2" name="Material">
<instance_effect url="#Material-effect2"/>
</material>
</library_materials>
</COLLADA>
TEST;
$lol = new SimpleXMLElement($string);
print_r($lol->library_materials->xpath("material[@id='Material2']"));
xmlns によって突然 xml ツリーが使用できなくなるのはなぜですか? 名前空間を定義しただけだと思ったので、他の名前空間の他の同一のタグと区別できます。私は何が欠けていますか?