- private static String readAnyXmlValue(final XMLStreamReader in) throws XMLStreamException {
- final StringBuilder sb = new StringBuilder();
- final String anyXmlElementName = in.getLocalName();
- sb.append('<').append(anyXmlElementName).append(" xmlns=\"").append(in.getNamespaceURI()).append("\">");
-
- while (in.hasNext()) {
- final int eventType = in.next();
-
- if (eventType == XMLStreamConstants.START_ELEMENT) {
- sb.append('<').append(in.getLocalName()).append('>');
- } else if (eventType == XMLStreamConstants.END_ELEMENT) {
- sb.append("</").append(in.getLocalName()).append('>');
-
- if (in.getLocalName().equals(anyXmlElementName)) {
- break;
+ private static Document readAnyXmlValue(final XMLStreamReader in) throws XMLStreamException {
+ // Underlying reader might return null when asked for version, however when such reader is plugged into
+ // Stax -> DOM transformer, it fails with NPE due to null version. Use default xml version in such case.
+ final XMLStreamReader inWrapper;
+ if (in.getVersion() == null) {
+ inWrapper = new StreamReaderDelegate(in) {
+ @Override
+ public String getVersion() {
+ final String ver = super.getVersion();
+ return ver != null ? ver : XML_STANDARD_VERSION;