Различная сериализация XML на Android и J2SE с использованием Google HTTP Lib и XPP

В моем примере мне требуется XML, который не имеет атрибута xmlns="..." в корневом узле. Принимающая сторона (Bose SoundTouch 20) не знает, что делать с этим элементом, и вызывает ошибку. И я не могу это изменить. Итак, я пришел поставить с этим кодом

public static class AnyType {
   @Key("@attr")
   public String attr;
   @Key
   public String elem;
   @Key
   public String value;
}

@Test
public void test01_renderXMLWithoutXmlNs() throws XmlPullParserException, IOException {
    // Don't create any NS Elements
    final XmlNamespaceDictionary dict = new XmlNamespaceDictionary().set("", "");
    final XmlHttpContent xmlContentForPostCall = new XmlHttpContent(dict, "AnyType", new AnyType());

    final OutputStream os = new ByteArrayOutputStream();
    xmlContentForPostCall.writeTo(os);
    System.out.println( os.toString());
}

На Android (я тестировал с Android 8.1.0, LG Nexus 5X) я получаю

<?xml version='1.0' encoding='UTF-8' ?><AnyType />

Если я использую тот же код с приложением J2SE, результат

<?xml version="1.0"?><AnyType xmlns="" />  

Не уверен, если это проблема с XPP ниже (Android против J2SE). Любая подсказка, как избежать сериализации xmlns на обеих платформах, Android и J2SE.

0 ответов

Другие вопросы по тегам