我有一个要编辑的谷歌地图的 KML 文件。这是一个精简版:
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2'>
<Document>
<Placemark>
<name>00</name>
<snippet></snippet>
<description><![CDATA[]]></description>
<styleUrl>#Style0-polygon-3-map</styleUrl>
<ExtendedData>
<Data name='Two-Digit Districts'>
<value>AK-00</value>
</Data>
<Data name='Standard Districts'>
<value>AK-AL</value>
</Data>
<Data name='At Large as District 1'>
<value>AK-1</value>
</Data>
<Data name='Full District Name'>
<value>Alaska At Large</value>
</Data>
<Data name=''>
<value>AK</value>
</Data>
</ExtendedData>
</PlaceMark>
</Document>
</kml>
在我的 php 代码中,我正在使用 SimpleXML 深入研究每个地标节点:
foreach ($kml->Document->Placemark as $placemark) {
$extendeddata = $placemark->ExtendedData;
}
我需要获取属性与“At Large as District 1”匹配的<Data>
节点。name
在 NPP 的 XML 工具插件中,当我只取<ExtendedData>...</ExtendedData>
节点时,此查询返回我想要的节点://Data[@name='At Large as District 1']
. 但是,当我在 PHP 中尝试相同的查询时:
$targetnode = $extendeddata->xpath("//Data[@name='At Large as District 1']")
我得到一个空数组。我不明白为什么应该是完全有效的 xpath 查询没有返回任何信息。我错过了什么吗?