名前空間を含むXMLを抽出しようとしました。私はこれを自分自身で理解しようとしました。私は何をしているのか、何が間違っているのかを正確に特定することはできません。XML名前空間 - どのように取得するのですか?
私は変数$myXMLData
にこのセットを持っている、とtitle属性吐き出すために、次のコードを実行:
$myXMLData=<<<XML
<getmatchingproductresponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01">
<getmatchingproductresult asin="055726328X" status="Success">
<product>
<attributesets>
<ns2:itemattributes xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd" xml:lang="en-US">
<ns2:studio>lulu.com</ns2:studio>
<ns2:title>You Are a Spiritual Healer</ns2:title>
</ns2:itemattributes>
</attributesets>
<relationships>
</relationships>
</product>
</getmatchingproductresult>
<responsemetadata>
<requestid>4304bf06-acd2-4792-804a-394a2e01656f</requestid>
</responsemetadata>
</getmatchingproductresponse>
XML;
$sxe=new SimpleXMLElement($myXMLData);
$sxe->registerXPathNamespace('ns','http://mws.amazonservices.com/schema/Products/2011-10-01');
$result=$sxe->xpath('//ns:title');
foreach ($result as $title)
{
echo $title . "<br>";
}
をしかし、私の出力は空白です。私はここで間違って何をしていますか?助けてください...!
こんにちは@ThW、 私はアマゾンのAPIコールが始まりとXMLの最後に '<<< XML'と' XML'を持っていない実現私のコードを使用しようとしましたが、私はまだlocalhost上で空の画面を表示しています:(おそらく、eval.inとは違うかもしれませんが... API呼び出し自体にはすでに 'XML'タグはすでに配置されていますか? – 8bitmagic
$ variable = <<< KEYWORD ... KEYWORD;はPHPや他の言語(Perlなど)で使用される特別な文字列構文で、エスケープの少ない複数行の文字列を指定できます。 '$ variable =" ... "'にシンボリック構文を適用します。 – ThW
この場合、$変数を解析することができますか?なぜこの場合にはうまくいかなかったのでしょうか? – 8bitmagic