#endif
using namespace xmlconstants;
using namespace xmltooling;
+using namespace xercesc;
using namespace std;
DOMElement* AbstractXMLObjectMarshaller::marshall(
targetElement->setAttributeNS(XSI_NS,noNamespaceSchemaLocation,m_noNamespaceSchemaLocation);
}
}
+
+ static const XMLCh _nil[] = { chLatin_x, chLatin_s, chLatin_i, chColon, chLatin_n, chLatin_i, chLatin_l, chNull };
+
+ if (m_nil != xmlconstants::XML_BOOL_NULL) {
+ switch (m_nil) {
+ case xmlconstants::XML_BOOL_TRUE:
+ targetElement->setAttributeNS(XSI_NS, _nil, xmlconstants::XML_TRUE);
+ break;
+ case xmlconstants::XML_BOOL_ONE:
+ targetElement->setAttributeNS(XSI_NS, _nil, xmlconstants::XML_ONE);
+ break;
+ case xmlconstants::XML_BOOL_FALSE:
+ targetElement->setAttributeNS(XSI_NS, _nil, xmlconstants::XML_FALSE);
+ break;
+ case xmlconstants::XML_BOOL_ZERO:
+ targetElement->setAttributeNS(XSI_NS, _nil, xmlconstants::XML_ZERO);
+ break;
+ }
+ m_log.debug("adding XSI namespace to list of namespaces used by XMLObject");
+ addNamespace(Namespace(XSI_NS, XSI_PREFIX));
+ }
marshallElementType(targetElement);
marshallNamespaces(targetElement);
{
m_log.debug("marshalling text and child elements for XMLObject");
- const XMLCh* val;
unsigned int pos=0;
+ const XMLCh* val = getTextContent(pos);
+ if (val && *val)
+ domElement->appendChild(domElement->getOwnerDocument()->createTextNode(val));
+
const list<XMLObject*>& children=getOrderedChildren();
for (list<XMLObject*>::const_iterator i=children.begin(); i!=children.end(); ++i) {
- val = getTextContent(pos);
- if (val && *val)
- domElement->appendChild(domElement->getOwnerDocument()->createTextNode(val));
if (*i) {
#ifndef XMLTOOLING_NO_XMLSEC
(*i)->marshall(domElement,NULL,credential);
#else
(*i)->marshall(domElement);
#endif
- ++pos;
+ val = getTextContent(++pos);
+ if (val && *val)
+ domElement->appendChild(domElement->getOwnerDocument()->createTextNode(val));
}
}
- val = getTextContent(pos);
- if (val && *val)
- domElement->appendChild(domElement->getOwnerDocument()->createTextNode(val));
}