summaryrefslogtreecommitdiff
path: root/ext/soap/php_encoding.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-08-24 11:46:11 +0000
committerDmitry Stogov <dmitry@php.net>2005-08-24 11:46:11 +0000
commitda4096c210b0f4f931e06c370679a2ca00b94652 (patch)
treea299e2d370c075517b15c21ec9a3a349a7d16154 /ext/soap/php_encoding.c
parent19dc0411f7338abdb50e3e378920de4c2087f1f6 (diff)
downloadphp-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.c14
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 {