如何在PHP中读取高级XML文件



如何从XML文件下方检索图像URL?我可以在数组或对象格式中检索urlloc lastmodchangefreqpriority。但是图像,LOC,标题不是。请告诉我存在哪种解决方案?

我能够检索XML对象的下方。

    SimpleXMLElement Object
(
    [url] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [loc] => https://test_url//search?tags=Auto%20Repairs
                    [lastmod] => 2017-08-15
                    [changefreq] => daily
                    [priority] => 0.5
                )
        )
)

我的XML文件代码如下。

<?xml version="1.0" encoding="utf-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
    <url>
    <loc>https://test_url/search?tags=Auto%20Repairs</loc>
    <lastmod>2017-08-15</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.5</priority>
    <image:image>
    <image:loc>https://media.test_url/1476130698_business_images.png</image:loc>
    <image:title>RV Services Near Me</image:title>
    </image:image>
    <image:image>
    <image:loc>https://media.test_url/1470780022.jpg</image:loc>
    <image:title>RV Services Near Me</image:title>
    </image:image>
    <image:image>
    <image:loc>https://media.test_url/1477691994.jpg</image:loc>
    <image:title>RV Services Near Me</image:title>
    </image:image>
    <image:image>
    <image:loc>https://media.test_url/1466467993.jpg</image:loc>
    <image:title>RV Services Near Me</image:title>
    </image:image>
    </url>
    </urlset>

您在特定名称空间中处理元素的处理在这种情况下,前缀(。因此,->children("image", true);将提取图像名称空间中的所有节点,然后一次使用foreach()进行每个节点。

$xml = simplexml_load_file($fileName);
$images = $xml->url->children("image", true);
foreach ( $images as $image )   {
    echo $image->loc."=".$image->title.PHP_EOL;
}

这会生成...

https://media.test_url/1470780022.jpg=RV Services Near Me
https://media.test_url/1477691994.jpg=RV Services Near Me
https://media.test_url/1466467993.jpg=RV Services Near Me

请检查以下围绕代码的工作。这肯定会帮助您继续前进。请让我知道是否对您有帮助。

<?php

$xmlstr = '<?xml version="1.0" encoding="utf-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
    <url>
    <loc>https://test_url/search?tags=Auto%20Repairs</loc>
    <lastmod>2017-08-15</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.5</priority>
    <image:image>
    <image:loc>https://media.test_url/1476130698_business_images.png</image:loc>
    <image:title>RV Services Near Me</image:title>
    </image:image>
    <image:image>
    <image:loc>https://media.test_url/1470780022.jpg</image:loc>
    <image:title>RV Services Near Me</image:title>
    </image:image>
    <image:image>
    <image:loc>https://media.test_url/1477691994.jpg</image:loc>
    <image:title>RV Services Near Me</image:title>
    </image:image>
    <image:image>
    <image:loc>https://media.test_url/1466467993.jpg</image:loc>
    <image:title>RV Services Near Me</image:title>
    </image:image>
    </url>
    </urlset>';
    /* here i am deleting colon */
    $CleanXML = str_replace(["image:image", "image:loc", "image:title", "xmlns:image", "xsi:schemaLocation", "xmlns:xsi"],["imageimage","imageloc","imagetitle", "xmlnsimage", "xsischemaLocation", "xmlnsxsi"], $xmlstr);
    $ParseData = @simplexml_load_string($CleanXML);
    echo "<pre>";
    print_r($ParseData);

最新更新