处理pear xml_serializer中的空标记

时间:2009-11-16 10:36:30

标签: php xml pear

我正在使用PEAR XML Serializer从数组输入生成xml结果。我发现空数组元素的编码方式如下:< arraykey />。我更喜欢这种方式< arraykey>< / arraykey>

以下是我的选择:

            $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 个答案:

答案 0 :(得分:1)

在库的实际状态中,它使用PEAR XML_Util,如果查看XML_Util::createTagFromArray()的代码,则会对空标记执行以下操作:

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

您可能使用包含' '等空格的字符串伪造空内容,但这会产生类似<arraykey> </arraykey>的内容。

BTW,<arraykey/>在XML中是完全合法的(建议用于空标签,它也用于XHTML)。

答案 1 :(得分:0)

您是否更喜欢<tag></tag>格式而不是<tag />?注意到(正如另一张海报所说)<tag />是完全有效的XML。就个人而言,我更喜欢自动关闭空标签。