Вот решение (путем преобразования XML-данных с использованием API-интерфейсов Java XSLT),
Как вы, возможно, уже заметили ... Один JAXB не может удовлетворить это требование, но после сортировки объекта в отформатированной XML-строке(как вы уже показали), вы можете затем обработать / преобразовать его соответствующим образом, используя подходящий XSLT-файл
Таким образом, чтобы получить линеаризованный элемент 'Request', просто используйте xsl, показанный ниже:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="TrackAndTrace"/>
<xsl:strip-space elements="Request"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Примечание: также проверено, что вышеуказанный метод / подход работает должным образом - использовал образец кода Stylizer (от https://docs.oracle.com/javase/tutorial/jaxp/xslt/transformingXML.html)
Cheers!
Обновление: если вы хотитерешение, которое также сохраняет исходный префикс пространства имен, как показано в вашем вопросе, следуйте этому варианту. Добавьте factory.setNamespaceAware (true); в коде стилизатора и используйте этот измененный XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="w3.org/1999/XSL/Transform" xmlns:ns4="dummy.com/xsd/naku_001">
<xsl:strip-space elements="ns4:TrackAndTrace"/>
<xsl:strip-space elements="ns4:Request"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>