为了账号安全,请及时绑定邮箱和手机立即绑定

PHP SimpleXMLElement - 在元素中访问值

PHP SimpleXMLElement - 在元素中访问值

PHP
Qyouu 2023-04-21 17:25:34
我正在使用 SimpleXMLElement 类在 php 中读取 KML 文件。树中的最后一个元素看起来像下面的例子(php 对象的 var_dump 说 $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->attributes() 并且只能访问“featurecla”。
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

我找到了解决方案


事实证明我没有正确检查 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

        }

    }


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信