Различная сериализация XML на Android и J2SE с использованием Google HTTP Lib и XPP - PullRequest
0 голосов
/ 10 сентября 2018

В моем примере мне требуется 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 vs. J2SE).Любая подсказка, как избежать сериализации xmlns на обеих платформах, Android и J2SE.

...