SimpleXmlElement-> addAttribute()不允许空字符串

时间:2012-01-05 06:34:00

标签: php xml simplexml

说明

调用addAttribute(“attrname”,“”)之类的调用 “PHP警告:SimpleXMLElement :: addAttribute():属性名称和值是必需的”。除警告外,该属性也将被丢弃。

重现代码:

<?php
$xml = new SimpleXmlElement("<img></img>");
$xml->addAttribute("src", "foo");
$xml->addAttribute("alt", "");
echo $xml->asXML()."\n";
?>

预期结果:

<?xml version="1.0"?>
<img src="foo" alt=""/>

实际结果:

PHP Warning:  SimpleXMLElement::addAttribute(): Attribute name and value are required in [...]/test.php on line 4
<?xml version="1.0"?>
<img src="foo"/>

这个问题存在于PHP 5.2.1中,但是在PHP5.3.5中它可以正常工作,但我无法更改我的php版本(出于某种原因)。有什么方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

您可以尝试更改以下行

$xml = new SimpleXmlElement("<img>");

也可以在下面尝试

    $xml = new DOMDocument('1.0', 'iso-8859-1');

    $doc = $xml->createElement('document');
    $doc = $xml->appendChild($doc);

答案 1 :(得分:1)

SimpleXMLElement::addAttribute的文档说value参数是可选的,因此您可以尝试省略它。我没有尝试使用php 5.2.1,但是5.2.6和5.3都使用你发布的代码,如果你省略value参数(这使我和文档混淆),两者都会发出警告。 / p>

答案 2 :(得分:0)

这对你有用吗?我手头没有5.2.1进行测试。它适用于5.3.6。

$xml = simplexml_load_string('<img src="images/bg.png" alt="" />');
echo $xml->asXML();