在 PHP 中从 XML 获取属性

2023-12-22

我正在尝试使用以下代码从 XML 文件获取属性:

$xmlFile = "http://weather.aero/dataserver_current/httpparam?dataSource=metars&requestType=retrieve&format=xml&stationString=".$_GET['station']."&hoursBeforeNow=1";

$xml = simplexml_load_file($xmlFile);

这是 XML 文件:

<response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XML-Schema-instance" version="1.2" xsi:noNamespaceSchemaLocation="http://weather.aero/schema/metar1_2.xsd">
<request_index>29916745</request_index>
<data_source name="metars"/>
<request type="retrieve"/>
<errors/>
<warnings/>
<time_taken_ms>2</time_taken_ms>
<data num_results="1">
<METAR>
<raw_text>EGHH 241850Z 17014KT 9999 BKN006 17/16 Q1000</raw_text>
<station_id>EGHH</station_id>
<observation_time>2012-08-24T18:50:00Z</observation_time>
<latitude>50.78</latitude>
<longitude>-1.83</longitude>
<temp_c>17.0</temp_c>
<dewpoint_c>16.0</dewpoint_c>
<wind_dir_degrees>170</wind_dir_degrees>
<wind_speed_kt>14</wind_speed_kt>
<visibility_statute_mi>6.21</visibility_statute_mi>
<altim_in_hg>29.52756</altim_in_hg>
<sky_condition sky_cover="BKN" cloud_base_ft_agl="600"/>
<flight_category>IFR</flight_category>
<metar_type>METAR</metar_type>
<elevation_m>11.0</elevation_m>
</METAR>
</data>
</response>

现在,我可以提取其他信息,但要获取 的属性,我使用以下命令:

<?php foreach ($xml->data->METAR[0]->sky_conditions->attributes() as $sky_cover => $cloud_base_ft_agl){

            echo"<tr>";
            echo"<td><strong>";
            if ($sky_cover == "CAVOK") {echo "Ceiling and Visibility OK";} else {echo $val['sky_cover'];}
            echo"</strong></td>";
            echo"<td><strong>";
            if (isset($cloud_base_ft_agl)){echo $cloud_base_ft_agl; }
            echo"</strong></td>";
            echo"</tr>";
        }?>

但是,我收到错误: 警告:main() [function.main]:节点不再存在于

关于如何解决这个问题有什么想法吗?


sky_conditions不退出 不存在..请注意sky_condition not in $xml->data->METAR[0]->sky_conditions->attributes()

这将解决这个问题

$td = "<tr><td><strong>%s</strong></td><td><strong>%s</strong></td></tr>";
echo '<table>';
foreach ( $xml->data->METAR[0]->sky_condition as $value ) {
    $attribute = $value->attributes();
    printf($td, $attribute['sky_cover'], $attribute['cloud_base_ft_agl']);
}
echo '</table>';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PHP 中从 XML 获取属性 的相关文章

随机推荐

  • 为什么 boost locale 不提供字符级规则类型?

    环境 boost1 53 0 c 11 C 新手 在boost语言环境边界分析中 规则类型是为单词指定的 例如 boundary word letter boundary word number 和句子 但字符没有边界规则类型 我想要的就是
  • 获取数组的每个子数组的最后一个元素

    我知道对于数组可以使用last下划线的函数 所以在这个数组的情况下它将是 myArray 32 1 8 31 lastElement last myArray 问题是当存在这样的矩阵时 myArray 1 3 5 55 66 77 0 1
  • 从 PostMan 调用 asp.net core web api

    我试图从 PostMan 调用以下函数 asp net web api core HttpPost public InfluencerSearchResultWithFacets Post string q string group Lis
  • Visual Studio Code - Java - 导入错误等

    刚刚开始处理工作中的现有项目 并希望使用 Visual Studio Code 作为我的 IDE 我在最近的 Rails 项目中使用了它并且很喜欢它 所以想尝试使用 Java 然而 每当我尝试打开其中一个项目时 我都会收到大量不同的错误 包
  • 为执行因子的函数赋予条件

    这个问题与此有关here https stackoverflow com questions 66664944 converting column values from factors into column names and assi
  • 是否应该对 OLAP 数据库进行非规范化以提高读取性能? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我一直认为数据库应该针对读取性能进行非规范化 就像针对 OLAP 数据库设计所做的那样 而不是针对 OLTP 设计进一步夸大 3NF 各种职位的
  • Rails 4 升级旧会话的 JSON::ParseError

    从 Rails 3 2 升级到 Rails 4 1 4 后 使用现有会话 来自较旧的 Rails 3 2 版本 访问应用程序会导致内部服务器错误 回溯 JSON ParserError 795 unexpected token at I s
  • 在密封类上实现 IDisposable

    我认为以前没有人问过这个问题 我对实施的最佳方式有点困惑IDisposable在密封类上 具体来说 是不从基类继承的密封类 即 纯密封类 这是我编造的术语 也许你们中的一些人同意我的观点 即实施指南IDisposable非常令人困惑 也就是
  • Apache 和 Boyer–Moore 字符串搜索算法的 StringUtils.contains

    要在 S 中搜索 s size S gt size s 并返回真 假值 使用 Apache 的 StringUtils contains 或使用由我找到的人 Thanks 上次我在调试时查看 Java 正则表达式匹配代码时 Java 7 正
  • 有没有办法并行运行 C++ 单元测试?

    我使用 Boost Test 已经很长时间了 但最终我的测试运行得太慢了 由于每个测试都是高度并行的 我希望它们与我的所有核心同时运行 有没有办法使用 Boost 测试库来做到这一点 我没有找到任何解决方案 我试图了解如何编写自定义测试运行
  • Symfony 3 - 性能分析

    是否可以获得比下图更多 更深入的关于 Symfony 速度 慢度的数据 正如你所看到的 它说 控制器 进程大约需要 8 秒 在开发模式下 但我想了解更多关于它的信息 Symfony 在这 8 秒内实际上做了什么 显然 屏幕上的表单有点重 渲
  • 旋转时调整 iPhone 上的视图大小

    我有一个有很多视图的应用程序 我希望只有几个视图能够在设备旋转时旋转为横向 我发现我无法使用 BOOL shouldAutorotateToInterfaceOrientation因为这会旋转我的应用程序中的每个视图 我在 Stack Ov
  • 如何在离线 Debian 机器上安装 R 软件包?

    我有一个 Debian 虚拟机 但未连接到互联网 然而 我仍然可以从有互联网连接的本地计算机上 scp 任何文件 为了提供一些背景信息 我尝试在虚拟机上托管一个闪亮的应用程序 我仍然可以使用 apt get 命令安装旧版本的 R 3 1 1
  • 如何在 pub extern "C" fn 中返回动态长度的向量?

    我想返回一个向量pub extern C fn 由于向量具有任意长度 我想我需要返回一个结构体 指向向量的指针 以及 向量中元素的数量 我当前的代码是 extern crate libc use self libc size t int32
  • jQuery移动列表视图延迟加载

    如何在移动 jquery listview 小部件中实现延迟加载 任何人都可以举一个使用 json 格式的静态数据绑定到 jquery mobile listview 小部件的示例吗 谢谢 有几种方法 下面两种方法效果很好 JQM 方式 很
  • django 表单在点击提交时不起作用

    我正在尝试制作一种带有性别选择的表格 用户可以选择男性或女性 我现在在 forms py 中拥有什么 class GenderForm forms Form demo DemoData objects all GENDER CHOICES
  • base.html 的 Django 全局变量

    我已经实现了一个全局变量 但我真的不知道如何访问它 我发现的例子有点令人困惑 模型 py Categorys of Post Model class Category models Model title models CharField
  • 使用带有远程 git 存储库的 capistrano 进行部署,但没有在生产服务器上运行 git

    我有一个远程 git 存储库设置 用于在我的团队中进行集中开发 但是 我们部署应用程序的生产服务器当前没有运行 git 我们想要使用 capistrano 来部署我们的应用程序 如何设置部署配方以在部署时从远程 git 存储库 拉取 换句话
  • unique_ptr堆和栈分配

    原始指针可以指向在堆栈或堆上分配的对象 堆分配示例 heap allocation int rawPtr new int 100 std cout lt lt rawPtr lt lt std endl 100 堆栈分配示例 int i 1
  • 在 PHP 中从 XML 获取属性

    我正在尝试使用以下代码从 XML 文件获取属性 xmlFile http weather aero dataserver current httpparam dataSource metars requestType retrieve fo