1

非常感谢有关如何实现以下结果的帮助 - 能够使用 PHP 片段或任何方法将id属性添加到标签中。<image>

<?xml version="1.0" encoding="utf-8"?>
<root>
    <property>
        <images>
            <image id="1">
                <url>http://www.mywebsite/image?id=1&.jpg</url>
            </image>
            <image id="2">
                <url>http://www.mywebsite/image?id=2&.jpg</url>
            </image>
        </images>
    </property>
</root> 
4

2 回答 2

1

我猜你想创建上面相同的xml

$array = array(
        "http://www.mywebsite/image?id=1&.jpg",
        "http://www.mywebsite/image?id=2&.jpg"
);

header('Content-Type:text/plain');
$xml = new SimpleXMLElement("<root></root>");
$property = $xml->addChild('property');
$images = $property->addChild('images');

foreach($array as $link) {
    parse_str(parse_url($link, PHP_URL_QUERY), $query);

    $image = $images->addChild('image');
    $image->addAttribute("id", $query['id']);
    $url = $image->addChild("url", urlencode($link));
}

echo $xml->asXML();
于 2013-05-11T21:58:17.013 回答
0

如果您正在读取字符串,则可以循环<images>并将id属性添加到每个<image>.

注意:由于您的 url 中的 ,您的 XML 会引发错误,因此为了一个工作示例&,我已将它们替换为。&amp;

header('Content-Type:text/plain');
$xmlstring = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<root>
    <property>
        <images>
            <image>
                <url>http://www.mywebsite/image?id=1&amp;.jpg</url>
            </image>
            <image>
                <url>http://www.mywebsite/image?id=2&amp;.jpg</url>
            </image>
        </images>
    </property>
</root>
XML;

$xml = simplexml_load_string($xmlstring);

foreach ($xml->property->images->image as $image)
{
    parse_str(parse_url($image->url, PHP_URL_QUERY), $querystring);
    $image->addAttribute("id", $querystring['id']);
}

echo $xml->asXML();

同样的方法也可以通过读取 XML 文件而不是字符串来实现:

$xml = simplexml_load_file('path/to/file.xml');
于 2013-05-11T23:47:08.823 回答