Работа с пустыми тегами в груше xml_serializer - PullRequest
0 голосов
/ 16 ноября 2009

Я использую PEAR XML Serializer для генерации результатов XML из входных данных массива. Я обнаружил, что пустые элементы массива кодируются так: . Я бы предпочел это так

Ниже приведены мои варианты:

            $options = array
            (
                'indent' => '   ',
                'defaultTagName' => $this->xml_tag_name,
                'addDecl' => true,
                'encoding'  => 'UTF-8',
                'rootName' => $this->xml_root_name,
                XML_SERIALIZER_OPTION_RETURN_RESULT => true
            );

Есть ли другие варианты, чтобы исправить это?

Ответы [ 2 ]

1 голос
/ 16 ноября 2009

В фактическом состоянии библиотеки нет, она использует PEAR XML_Util и, если вы посмотрите на код XML_Util::createTagFromArray(), она делает следующее для пустых тегов:

if (!isset($tag['content']) || (string)$tag['content'] == '')
{
    $tag = sprintf('<%s%s />', $tag['qname'], $attList);
}

Возможно, вы могли бы подделать пустой контент строкой, содержащей пробел, такой как ' ', но это привело бы к чему-то вроде <arraykey> </arraykey>.

Кстати, <arraykey/> полностью допустим в XML (рекомендуется для пустых тегов, он также используется в XHTML).

0 голосов
/ 02 декабря 2009

Есть ли конкретная причина, по которой вы предпочитаете формат <tag></tag> вместо <tag />? Отмечая, что (как сказал другой автор) <tag /> является полностью допустимым XML. Лично я предпочитаю самозакрытие пустого тега.

...