}
Object jaxbObject = getJAXBNode(root);
if (jaxbObject == null)
throw new JAXBException(L.l("Unknown xmlNode"));
ClassSkeleton skeleton = _context.findSkeletonForObject(jaxbObject);
if (skeleton == null) {
// we strip the JAXBElement when we bind objects, so rewrap
// the object and try again
QName qname = JAXBUtil.qnameFromNode(root);
jaxbObject = new JAXBElement(qname, jaxbObject.getClass(), jaxbObject);
skeleton = _context.findSkeletonForObject(jaxbObject);
if (skeleton == null)
throw new UnmarshalException(L.l("Type {0} is unknown to this context",
jaxbObject.getClass()));
}
try {
return skeleton.bindFrom(this, jaxbObject, new NodeIterator(root));
}
catch (IOException e) {
throw new JAXBException(e);
}
}