【问题标题】:cannot find custom namespace in xml在 xml 中找不到自定义命名空间
【发布时间】:2010-09-18 08:14:01
【问题描述】:

有人可以帮我解决这个问题吗?

我需要在 xml 中找到 gml:pos 命名空间。

但是,非常重要! - 在 $item 部分退出循环

我真的不知道如何完成这项工作。

根据 google-api 文档,命名空间位于另一个自定义命名空间中。

$feed = simplexml_load_string($feedXml);
foreach ($feed->entry as $item) {

//do stuff
$i++;
}

编辑 我只是发现这个工作。

$namespace = $feed->getDocNamespaces();
$ns_gml=$item->children($namespace['georss'])->children($namespace['gml']);

感谢广告,Rich

【问题讨论】:

    标签: xml xpath simplexml


    【解决方案1】:

    您需要注册这些命名空间:

    <?php
      $feed->registerXPathNamespace("georss", "http://www.georss.org/georss");
      $feed->registerXPathNamespace("gml", "http://www.opengis.net/gml");
      // Now you can use gml:* and georss:* in XPath:
      // $feed->xpath('/entry/gml:...');
    ?>
    

    【讨论】:

    • $feed->xpath('/entry/gml:pos');--返回空数组?我已经阅读了有关相对路径的信息,所以我不知道为什么它不起作用。无论如何,我将使用自己找到的解决方案。无论如何,谢谢。
    • @Richard:这是关于命名空间处理的正确方法。 entry 根元素是否在某个命名空间下?也许是一个默认命名空间?
    猜你喜欢
    • 1970-01-01
    • 2015-09-15
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多