private Object convertToSimpleTypeIfPresent( Object objectToAdd, AbstractRecord nestedRow, AbstractSession executionSession) { String stringValue = null; Element theElement = ((Element) ((DOMRecord) nestedRow).getDOM()); Node textchild = theElement.getFirstChild(); if ((textchild != null) && (textchild.getNodeType() == Node.TEXT_NODE)) { stringValue = ((Text) textchild).getNodeValue(); if (stringValue != null && getKeepAsElementPolicy() != UnmarshalKeepAsElementPolicy.KEEP_UNKNOWN_AS_ELEMENT && getKeepAsElementPolicy() != UnmarshalKeepAsElementPolicy.KEEP_ALL_AS_ELEMENT) { objectToAdd = stringValue; } } if ((stringValue == null) || stringValue.length() == 0) { return objectToAdd; } String type = theElement.getAttributeNS( javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, XMLConstants.SCHEMA_TYPE_ATTRIBUTE); if ((null != type) && type.length() > 0) { XPathFragment typeFragment = new XPathFragment(type); String namespaceURI = ((DOMRecord) nestedRow).resolveNamespacePrefix(typeFragment.getPrefix()); typeFragment.setNamespaceURI(namespaceURI); QName schemaTypeQName = new QName(namespaceURI, typeFragment.getLocalName()); ConversionManager conversionManager = (ConversionManager) executionSession.getDatasourcePlatform().getConversionManager(); Class theClass = conversionManager.javaType(schemaTypeQName); if (theClass != null) { objectToAdd = conversionManager.convertObject(stringValue, theClass, schemaTypeQName); } } return objectToAdd; }