【问题标题】:PHP namespace simplexml problemsPHP 命名空间 simplexml 问题
【发布时间】:2010-01-20 00:09:06
【问题描述】:

晚安。

首先要说,我看过How do I parse XML containing custom namespaces using SimpleXML?

我不介意从源解析 XML 文档,它们使用自定义命名空间。

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:moshtix="http://www.moshtix.com.au">
  <channel>
   <item>
    <link>qweqwe</link>
    <moshtix:genre>asdasd</moshtix:genre>
...

例如。当我使用 SimpleXML 解析时,没有 mostix: 命名空间元素显示或可访问。可能是一个非常简单的解决方案,但是有什么想法吗?

【问题讨论】:

    标签: php xml namespaces simplexml xml-namespaces


    【解决方案1】:

    通常,人们使用children()

    $rss = simplexml_load_string(
        '<?xml version="1.0" encoding="utf-8"?>
        <rss version="2.0" xmlns:moshtix="http://www.moshtix.com.au">
            <channel>
                <link>qweqwe</link>
                <moshtix:genre>asdasd</moshtix:genre>
            </channel>
        </rss>'
    );
    
    foreach ($rss->channel as $channel)
    {
        echo 'link: ', $channel->link, "\n";
        echo 'genre: ', $channel->children('moshtix', true)->genre, "\n";
    }
    

    【讨论】:

    • 虽然这适用于提取每个元素,这很有帮助,但很多时候我需要执行 json_encode 并简单地捆绑每个单独的有效项目并将它们存储在数据库中。但是当我这样做时,它无法识别自定义命名空间项。有任何想法吗?每个 中的数据变化太大,无法手动输入。
    • 设法通过一些 foreach 扫描每个元素来修复它;)
    • 当人们说他们将 XML 转换为 JSON 而不关心结构时,我总是有点困惑。为什么不将它存储为 XML?
    猜你喜欢
    • 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
    相关资源
    最近更新 更多