XMLWriter::writeAttributeNS does not correctly deal with null values for the namespaceUri.
- Dominant language
- C++
- Stars
- 18.7k
- Forks
- 3.1k
- Avg merge
- 1h 47m
- Merged PRs (30d)
- 2
Description
### Example 1: attribute is dropped
``` php
openMemory();
$xmlWriter->startDocument();
$xmlWriter->startElementNS('s', 'root', 'http://sabre.io/ns');
$xmlWriter->writeAttributeNS('s', 'foo', null, 'bar');
$xmlWriter->endElement();
echo $xmlWriter->outputMemory(), "\n";
```
Vanilla PHP output:
``` xml
```
HHVM output:
``` xml
```
### Example 2: extra xmlns declaration with empty string
``` php
openMemory();
$xmlWriter->startDocument();
$xmlWriter->startElementNS('s', 'root', 'http://sabre.io/ns');
$xmlWriter->startElementNS('s', 'child', null);
$xmlWriter->writeAttributeNS('s', 'foo', null, 'bar');
$xmlWriter->endElement();
$xmlWriter->endElement();
echo $xmlWriter->outputMemory(), "\n";
```
Vanilla PHP output:
``` xml
```
HHVM output:
``` xml
```
Interesting to note that PHP also had the same issue up until PHP 5.2.2, according to 3v4l.
### Workaround
Instead of calling:
``` php
$xmlWriter->writeAttributeNS('s', 'foo', null, 'bar');
```
It's possible to just call:
``` php
$xmlWriter->writeAttributeNS('s:foo', 'bar');
```
Contributor guide
Assessment
This issue has not been assessed yet.