Como no hay respuesta, intentaré ahorrar un tiempo precioso a cualquiera que llegue aquí.
No encontré ninguna causa, y como no tengo tiempo para analizar las bibliotecas simples, se me ocurrió una "columna de trabajo". En realidad, es más un consejo: no lo use para (calcular referencias) crear xml si tiene una definición xml grande y el orden es importante (una regla más que una excepción). El orden se usa principalmente para calcular referencias de todos modos así que solo ahórrese un poco de tiempo y hágalo manualmente.
La plantilla:
<document>
<name>$NAME$</name>
<isTrue>$IS_TRUE$</isTrue>
</document>
La clase:
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.io.InputStream;
/**
* User: ksaric
*/
public class SimpleXml {
public static final String NAME = "$NAME$";
public static final String IS_TRUE = "$IS_TRUE$";
private String name;
private Boolean isTrue;
public SimpleXml() {
}
public Boolean getTrue() {
return isTrue;
}
public void setTrue(Boolean aTrue) {
isTrue = aTrue;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
String template = null;
try {
template = getTemplate();
} catch (IOException e) {
e.printStackTrace();
}
/* GUAVA - checkNotNull() */
if (null == template) return null;
template = template.replace(NAME, getName());
/* OR CONVERT IN THE GETTER METHOD */
template = template.replace(IS_TRUE, getTrue().toString());
return template;
}
/* SINGLETON? Performance(IO) loss... */
public String getTemplate() throws IOException {
InputStream templateStream = getClass().getResourceAsStream("/template.xml");
/* APACHE IO COMMONS */
/*
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
*/
final String stringTemplate = IOUtils.toString(templateStream);
return stringTemplate;
}
}
La prueba:
import org.junit.Test;
import static junit.framework.Assert.*;
/**
* User: ksaric
*/
public class SimpleXmlTest {
@Test
public void test() throws Exception {
//Before
/* Use standard instantiation, factory method recommended for immutability */
SimpleXml simpleXml = new SimpleXml();
simpleXml.setName("This is a name");
simpleXml.setTrue(false);
//When
String result = simpleXml.toString();
//Then
assertNotNull(result);
System.out.println(result);
}
}
No realmente una respuesta, pero ahorrar un poco de tiempo y no utilice Simple (que es una gran biblioteca) en Android ...
¿Has encontrado alguna solución o un motivo por el cual la aplicación de Android no conserva el pedido? ¿Es posible que la versión de Android XPP cause esto? – pfh
[He respondido esa pregunta aquí] (https://stackoverflow.com/a/48677998/3847464) –