如何使用php脚本解析xml文件 [英] How to parse xml file using php script

查看:34
本文介绍了如何使用php脚本解析xml文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是可能的xml文件

<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>werwer</title>
<link>werwerwe</link>

<item>
<g:id>704667</g:id>
<title>Nike</title>
<description>erterterter</description>
</item>

<item>
<g:id>4456456</g:id>
<title>Nike</title>
<description>erterterter</description>
</item>

</channel></rss>

如何解析那个 xml 文件,我有脚本但它不起作用

how to parse that xml file, I have script but it doesnt work

if (file_exists('products.xml')) {
    $xml = simplexml_load_file('products.xml');

    print_r($xml);
} else {
    exit('Failed to open products.xml.');
}

知道如何在 g:id 之间获取信息吗?

any idea how to get information between g:id?

推荐答案

您需要将命名空间应用到子项.http://php.net/manual/en/simplexmlelement.getnamespaces.php

You need to get an apply the namespace to the children. http://php.net/manual/en/simplexmlelement.getnamespaces.php

<?php
$xml = '<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
    <channel>
        <title>werwer</title>
        <link>werwerwe</link>

        <item>
            <g:id>704667</g:id>
            <title>Nike</title>
            <description>erterterter</description>
        </item>

        <item>
            <g:id>4456456</g:id>
            <title>Nike</title>
            <description>erterterter</description>
        </item>

    </channel>
</rss>';

$xml = simplexml_load_string($xml);
$ns = $xml->getNamespaces(true);

foreach ($xml->channel->item as $item) {
    echo $item->children($ns['g'])->id.PHP_EOL;
}
/*
704667
4456456
*/

https://3v4l.org/t2D84

这篇关于如何使用php脚本解析xml文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆