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 回答