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.
精彩评论