0

このサイトの例のような XML ファイルがあります: http://msdn.microsoft.com/en-us/library/ee223815(v=sql.105).aspx

次のようなものを使用して XML ファイルを解析しようとしています。

$data = file_get_contents('http://mywebsite here');
$xml = new SimpleXMLElement($data);
$str = $xml->Author;
echo $str;

残念ながら、これは機能していません。名前空間が原因であると思われます。asXML() を使用して $xml をダンプすると、XML データが正しく表示されます。

どうにかして名前空間を挿入する必要があることは理解していますが、その方法がわかりません。このタイプの XML ファイルを解析するにはどうすればよいですか?

4

1 に答える 1

3

必要なのは、名前空間を登録することだけです

$sxe = new SimpleXMLElement($data);
$sxe->registerXPathNamespace("diffgr", "urn:schemas-microsoft-com:xml-diffgram-v1");
$data = $sxe->xpath("//diffgr:diffgram") ;
$data = $data[0];
echo "<pre>";
foreach($data->Results->RelevantResults as $result)
{
    echo $result->Author , PHP_EOL ;
}

出力

Ms.Kim    Abercrombie
Mr.GustavoAchong
Mr. Samuel N. Agcaoili

実際のコード全体を見る

于 2012-12-03T18:14:10.100 に答える