SimpleXmlElement-> addAttribute () не допускает пустых строк - PullRequest
5 голосов
/ 05 января 2012

Описание:

Вызов типа 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 ]

1 голос
/ 05 января 2012

В документации для SimpleXMLElement::addAttribute указано, что параметр value является необязательным, поэтому вы можете попробовать его пропустить. Я не пробовал использовать php 5.2.1, но 5.2.6 и 5.3 оба работают с кодом, который вы разместили, и оба выдают предупреждения, если вы пропустите аргумент value (что смущает меня в документации).

1 голос
/ 05 января 2012

Вы можете попробовать, изменив строку ниже

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

, а также вы можете попробовать с ниже также

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

    $doc = $xml->createElement('document');
    $doc = $xml->appendChild($doc);
0 голосов
/ 05 января 2012

Это работает для вас?У меня нет 5.2.1 под рукой, чтобы проверить.Хотя работает на 5.3.6.

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