开发者

Dealing with empty tags in pear xml_serializer

Im using PEAR XML Serializer to generate xml results from array inputs. I found out that empty array elements are encoded like this: <arraykey/>. I'd rather prefer it this way <arraykey></arraykey>

Below are my options:

            $options = array
            (
                'indent' => '   ',
                'defaultTagName' => $this->xml_tag_nam开发者_C百科e,
                'addDecl' => true,
                'encoding'  => 'UTF-8',
                'rootName' => $this->xml_root_name,
                XML_SERIALIZER_OPTION_RETURN_RESULT => true
            );

Are there any other options to add to fix this?


In the actual state of the library no, it uses PEAR XML_Util and if you look at the code of XML_Util::createTagFromArray(), it does the following for empty tags:

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

You could probably fake empty content with a string that contains a space such as ' ' but that would result into something like <arraykey> </arraykey>.

BTW, <arraykey/> is totally legal in XML (it's recommended for empty tags, it's also used in XHTML).


Is there a concrete reason you prefer the <tag></tag> format over <tag />? Noting that (as another poster said) <tag /> is totally valid XML. Personally I prefer self-closing for an empty tag.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜