From Custom1Node Role is an object with Name and Id fields @Override protected void saveToXml( Element element, XmlPersistContext xmlPersistContext ) { super.saveToXml( element, xmlPersistContext ); // now save role id & name Element roleElement = xmlPersistContext.addChildElement( "Role", element ); xmlPersistContext.writeInt( null == role ? roleId : role.getId(), "id", roleElement ); xmlPersistContext.writeString( null == role ? roleName : role.getRoleName(), "name", roleElement ); } @Override protected void loadFromXml( Element element, XmlPersistContext xmlPersistContext ) throws TransformerException, XmlException { super.loadFromXml( element, xmlPersistContext ); Element roleElement = xmlPersistContext.getChildElement( element, "Role" ); roleId = xmlPersistContext.readInt( "id", roleElement ); roleName = xmlPersistContext.readString( "name", roleElement ); }