0

我使用 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
            );

是否有任何其他选项可以添加来解决这个问题?

4

2 回答 2

1

在库 no 的实际状态中,它使用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)。

于 2009-11-16T19:14:02.483 回答
0

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

于 2009-12-02T04:01:24.043 回答