Различная сериализация 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.