次のサンプル コンテンツを含む大きな xml ファイルがあります。
<transferData version="1.0">
<item id="1885880" itemType="kivihomepagetransfer">
<property name="country_id">
<value>4402</value>
</property>
<property name="rc_maintenance_other"></property>
<property name="claim_right_shareholder"></property>
<property name="charges_other"></property>
<property name="investment_flag"></property>
<property name="rc_repair_need"></property>
<property name="realtycompany">
<value>Asunto Oy Aulangtie 20</value>
</property>
xpathのオンラインジェネレーターを使用しました
http://www.xmltoolbox.com/index.html
の値にアクセスしたいのですが<property name="realtycompany">
、xpath 呼び出しは次のようになります。
$path = '//item[@id="'.$itemId.'"]/property[@name="realtycompany"]/value/text()';
$company = $xml->xpath($path);
print_r($company);
オンラインジェネレーターではこれは機能していますが、元のxmlでは機能していません。空の SimpleXMLElement オブジェクトを受け取っているだけです。foreachでItemIdが生成されますが、正しいです。
小さな例ではこれが機能するのに、大きなファイルでは何も見つからないのはなぜですか?
他のいくつかのバージョンを試しました:
$path = '//item[@id="'.$itemId.'"]/property[@name="realtycompany"]/value';
$path = '//item[@id="1885880"]/property[@name="realtycompany"]/value/text()';
$path = '/item[@id="'.$itemId.'"]/property[@name="realtycompany"]/value/text()';
$path = '/transferData[@version="1.0"]/item[@id="'.$itemId.'"]/property[@name="realtycompany"]/value/text()';
などなど... 誰も見つけられませんでした