¿Cómo serializar condicionalmente con JAXB o Jackson? Vista externa vs Vista interna

Estoy creando una API RESTful y tengo un caso de uso en el que necesito poder representar dos vistas diferentes de mis datos. Una que podamos usar internamente y otra que expondremos externamente. Además, mi API debe admitir tanto XML como JSON.

Para mi respuesta JSON esto es extremadamente fácil de hacer con Jackson. Puedo incluir condicionalmente campos en mi Respuesta JSON utilizando la función de JsonViews:http://wiki.fasterxml.com/JacksonJsonViews

Primero necesitas crear una clase simple que especifique tus vistas:

public class Views {

    public static class External {}

    public static class Internal extends External {}
}

Ahora, con mis clases de vista, simplemente anoto mis campos con los que pertenecen a Me gusta:

    @JsonView(Views.External.class)
    private String external = "External";

    @JsonView(Views.Internal.class)
    private String internal = "Internal";

Luego, puede serializar el objeto y especificar qué vista desea usar:

    ObjectMapper jsonMapper = new ObjectMapper();
    ObjectWriter externalWriter = jsonMapper.writerWithView(Views.External.class);
    String externalJson = externalWriter.writeValueAsString(new ResponseObject());

Esto funciona bien para JSON, pero desafortunadamente, el mismo no está soportado actualmente para XML. ¿Cómo puedo lograr lo mismo con XML? Estoy dispuesto a usar JAXB si es necesario para mi conversión XML.