1

この問題についてさまざまなスレッドを見てきましたが、どれも私を助けることができませんでした. 基本的に、私は KML ファイルをマップにロードする目的で解釈していますが、名前空間が本当に私を台無しにしています。KML の例を次に示します。

<?xml version="1.0" encoding="UTF-8">
<kml xmlns="http://www.opengis.net/kml/2.2" 
     xmlns:gx="http://www.google.com/kml/ext/2.2" 
     xmlns:kml="http://www.opengis.net/kml/2.2" 
     xmlns:atom="http://www.w3.org/2005/Atom">
 <Folder>
  <name>leeds primary schools (1 - 10)</name>
  <open>1<open>
  <Placemark>
      blah blah blah
  </Placemark>
  [etc etc etc]

つまり、ページ上のすべての Placemark 要素を取得したいという考えです。だから私はこのコードを使用しています:

$xml = simplexml_load_string($xml_string);
$xml->registerXPathNamespace("n", "http://www.opengis.net/kml/2.2");
$Placemarks = $xml->xpath("/n:Placemark");

それでも、私はただの空の配列です。誰かが私が間違っていることを見ることができますか?

4

1 に答える 1

1

$Placemarks = $xml->xpath("/n:Placemark");

これは、" " という名前の最上位の要素n:Placemarkを選択しようとします。

しかし、一番上の要素は " " ではなく、" Placemark" ですklm

解決策:

あなたがしたい:

$Placemarks = $xml->xpath("/*/n:Folder/n:Placemark");
于 2013-02-03T16:52:08.047 に答える