चूंकि कोई जवाब नहीं है, इसलिए मैं यहां आने वाले किसी भी व्यक्ति को अनमोल समय बचाने की कोशिश करूंगा।
मुझे कोई कारण नहीं मिला, और चूंकि मेरे पास सरल पुस्तकालयों का विश्लेषण करने का समय नहीं है, इसलिए मैं "वर्कअराउड" के साथ आया हूं। यह वास्तव में एक सलाह है, वास्तव में - इसका उपयोग xml बनाने के लिए नहीं करें यदि आपके पास बड़ी एक्सएमएल परिभाषा है और ऑर्डर मायने रखता है (एक अपवाद से अधिक नियम)। आदेश का उपयोग ज्यादातर मार्शलिंग के लिए किया जाता है, इसलिए बस कुछ समय बचाएं और इसे मैन्युअल रूप से करें।
टेम्पलेट:
<document>
<name>$NAME$</name>
<isTrue>$IS_TRUE$</isTrue>
</document>
वर्ग:
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;
}
}
परीक्षण:
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);
}
}
नहीं वास्तव में एक जवाब है, लेकिन अपने आप को कुछ समय की बचत करने का उपयोग नहीं करते एंड्रॉइड पर सरल (जो एक महान पुस्तकालय है) ...
क्या आपको कोई समाधान या कारण मिला है कि एंड्रॉइड ऐप ऑर्डर को सुरक्षित नहीं रखता है? क्या यह संभव है कि XPP एंड्रॉइड संस्करण इसका कारण बनता है? – pfh
[मैंने यहां उस प्रश्न का उत्तर दिया है] (https://stackoverflow.com/a/48677998/3847464) –