diff options
author | Dmitry Stogov <dmitry@php.net> | 2005-08-24 11:46:11 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2005-08-24 11:46:11 +0000 |
commit | da4096c210b0f4f931e06c370679a2ca00b94652 (patch) | |
tree | a299e2d370c075517b15c21ec9a3a349a7d16154 /ext/soap/php_encoding.c | |
parent | 19dc0411f7338abdb50e3e378920de4c2087f1f6 (diff) | |
download | php-git-da4096c210b0f4f931e06c370679a2ca00b94652.tar.gz |
Fixed boolean encoding (from 0/1 to false/true) to support some buggy soap SDKs.
Fixed support for missing nillable elements of sequnces.
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r-- | ext/soap/php_encoding.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index f5535a5e67..b53cf98937 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -931,9 +931,9 @@ static xmlNodePtr to_xml_bool(encodeTypePtr type, zval *data, int style, xmlNode } if (data->value.lval == 1) { - xmlNodeSetContent(ret, "1"); + xmlNodeSetContent(ret, "true"); } else { - xmlNodeSetContent(ret, "0"); + xmlNodeSetContent(ret, "false"); } if (data == &tmp) { @@ -1376,6 +1376,16 @@ static int model_to_xml_object(xmlNodePtr node, sdlContentModelPtr model, zval * } } return 1; + } else if (strict && model->u.element->nillable) { + property = xmlNewNode(NULL,model->u.element->name); + xmlAddChild(node, property); + if (style == SOAP_ENCODED) { + xmlSetProp(property, "xsi:nil", "1"); + } else { + xmlNsPtr xsi = encode_add_ns(property,XSI_NAMESPACE); + xmlSetNsProp(property, xsi, "nil", "1"); + } + return 1; } else if (model->min_occurs == 0) { return 2; } else { |