/*
- * Copyright 2001-2006 Internet2
+ * Copyright 2001-2007 Internet2
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <map>
#include <xmltooling/QName.h>
#include <xmltooling/XMLObject.h>
+#include <xmltooling/util/XMLHelper.h>
#if defined (_MSC_VER)
#pragma warning( push )
/**
* Creates an empty XMLObject with a particular element name.
- * The results are undefined if elementLocalName is NULL or empty.
+ * The results are undefined if localName is NULL or empty.
*
- * @param namespaceURI namespace URI for element
- * @param elementLocalName local name of element
- * @param namespacePrefix prefix of element name
+ * @param nsURI namespace URI for element
+ * @param localName local name of element
+ * @param prefix prefix of element name
+ * @param schemaType xsi:type of the object
* @return the empty XMLObject
*/
virtual XMLObject* buildObject(
- const XMLCh* namespaceURI, const XMLCh* elementLocalName, const XMLCh* namespacePrefix=NULL
+ const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix=NULL, const QName* schemaType=NULL
) const=0;
/**
* @param bindDocument true iff the XMLObject should take ownership of the DOM Document
* @return the unmarshalled XMLObject
*/
- XMLObject* buildFromElement(DOMElement* element, bool bindDocument=false) const {
- std::auto_ptr<XMLObject> ret(buildObject(element->getNamespaceURI(),element->getLocalName(),element->getPrefix()));
+ XMLObject* buildFromElement(xercesc::DOMElement* element, bool bindDocument=false) const {
+ std::auto_ptr<XMLObject> ret(
+ buildObject(element->getNamespaceURI(),element->getLocalName(),element->getPrefix(),XMLHelper::getXSIType(element))
+ );
ret->unmarshall(element,bindDocument);
return ret.release();
}
* @param bindDocument true iff the XMLObject should take ownership of the DOM Document
* @return the unmarshalled XMLObject
*/
- XMLObject* buildFromDocument(DOMDocument* doc, bool bindDocument=true) const {
+ XMLObject* buildFromDocument(xercesc::DOMDocument* doc, bool bindDocument=true) const {
return buildFromElement(doc->getDocumentElement(),bindDocument);
}
/**
- * Creates an empty XMLObject using the default build method, if a builder can be found.
- *
- * @param key the element key used to locate a builder
- * @return the empty object or NULL if no builder is available
- */
- static XMLObject* buildOne(const QName& key) {
- const XMLObjectBuilder* b=getBuilder(key);
- if (b)
- return b->buildFromQName(key);
- b=getDefaultBuilder();
- return b ? b->buildFromQName(key) : NULL;
- }
-
- /**
* Creates an unmarshalled XMLObject using the default build method, if a builder can be found.
*
* @param element the unmarshalling source
* @param bindDocument true iff the new XMLObject should take ownership of the DOM Document
* @return the unmarshalled object or NULL if no builder is available
*/
- static XMLObject* buildOneFromElement(DOMElement* element, bool bindDocument=false) {
+ static XMLObject* buildOneFromElement(xercesc::DOMElement* element, bool bindDocument=false) {
const XMLObjectBuilder* b=getBuilder(element);
return b ? b->buildFromElement(element,bindDocument) : NULL;
}
* @param element the element for which to locate a builder
* @return the builder or NULL
*/
- static const XMLObjectBuilder* getBuilder(const DOMElement* element);
+ static const XMLObjectBuilder* getBuilder(const xercesc::DOMElement* element);
/**
* Retrieves the default XMLObjectBuilder for DOM elements