PHP SimpleXMLElement - 访问元素中的值。

问题描述 投票:-1回答:1

我在php中使用SimpleXMLElement类读取一个KML文件。树中的最后一个元素看起来像下面的例子(var_dump of php object say $element)。

object(SimpleXMLElement)#2 (2) {
  ["@attributes"]=>
  array(1) {
    ["name"]=>
    string(10) "featurecla"
  }
  [0]=>
  string(15) "Admin-0 country"
}

我如何在php中访问 "Admin-0 country "的值?

我已经尝试了$element->children()和$element->attribute(),但只能访问 "featurecla"。

php simplexml kml
1个回答
0
投票

我已经找到了解决方案

原来我没有好好检查KML文件,只是看php var_dump的输出来了解数据结构。KML文件的数据如下图所示。

<Folder><name>ne_50m_admin_0_countries</name>
  <Placemark>
    <name>Zimbabwe</name>
    <Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    <ExtendedData><SchemaData schemaUrl="#ne_50m_admin_0_countries">
        <SimpleData name="featurecla">Admin-0 country</SimpleData>

在PHP代码中,我是用下面的代码来访问SimpleData的。

foreach($xmlContent->Document->Folder->children() as $Placemark){
        print_r("<h1>".(string)$Placemark->name."</h1>");
        foreach ($Placemark->ExtendedData->SchemaData->SimpleData as $element){
            var_dump($element); //output shown above
            var_dump($element->children());
            var_dump($element->attributes());
                        }
    }

在查看原始kml文件后,我能够访问到所需的信息。

foreach($xmlContent->Document->Folder->children() as $Placemark){
        print_r("<h1>".(string)$Placemark->name."</h1>");

        foreach ($Placemark->ExtendedData->SchemaData->SimpleData as $element){

            echo $element->attributes()."=>";
            echo $element."<br>";           
            //output featurecla=>Admin-0 country
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.