【问题标题】:PHP SimpleXML Namespace ProblemPHP SimpleXML 命名空间问题
【发布时间】:2011-05-17 07:06:55
【问题描述】:

我正在尝试获取 RSS 提要中每个条目的 entry->id 和 entry->cap:parameter->value.... 下面是我正在使用的代码。它正确显示了 id,但是它没有显示 value 字段....请帮助。

$url = 'http://alerts.weather.gov/cap/us.php?x=1';
$cap = simplexml_load_file($url);
foreach($cap->entry as $entry){
    echo 'ID: ', $entry->id, "\n";
    echo 'VTEC: ', $entry->children('cap', true)->parameter->value, "\n"; 
echo "<hr>";
}

提前感谢您的帮助。

【问题讨论】:

  • 你能发布一个 XML 文档的示例吗?

标签: php xml simplexml


【解决方案1】:

&lt;value&gt; 元素与&lt;cap:parameter&gt; 不在同一个namespace 中:

<cap:parameter>
    <valueName>VTEC</valueName>
    <value>/O.CON.KMPX.FL.W.0012.000000T0000Z-110517T1800Z/</value>
</cap:parameter>

所以你必须再次致电children()

代码 (demo)

$feed = simplexml_load_file('http://alerts.weather.gov/cap/us.php?x=1');
foreach ($feed->entry as $entry){
    printf(
        "ID: %s\nVTEC: %s\n<hr>",
        $entry->id,
        $entry->children('cap', true)->parameter->children()->value
    );
}

【讨论】:

  • 我只是尝试运行它,它没有打印 元素。其输出ID:alerts.weather.gov/cap/…VTEC:ID:alerts.weather.gov/cap/….....
  • @Zachary 它可以满足您的要求。查看演示链接。
  • @Gordon... 它不返回 $entry->children('cap', true)->parameter->children()->value
  • @Zachary 它返回所有/feed/entry/id/feed/entry/cap:parameter/value
  • @Gordon...我的道歉...我粘贴错了。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 2013-04-30
相关资源
最近更新 更多