[英]Simple XML Serialization + Builder pattern
我在构造函数中有一个带有10个以上参数的类,我想实现一个Builder模式。 同时,我想使用简单XML序列化从XML文件构建对象。 有什么办法可以做到这一点?
import org.simpleframework.xml.*;
public class Example {
@Element(name = "field-1", required = false)
private final int field1;
@Element(name = "field-2")
private final int field2;
[...]
public simpleXMLConstructor(
@Element(name = "field-1", required = false) int field1,
@Element(name = "field-2") int field2,
[...]) {
this.field1 = field1;
this.field2 = field2;
[...]
}
}
据我了解,您没有任何针对XML库的特定选择。 我建议使用GitHub上的Scilca XML Progression(SXP)软件包。 要编写用于对象序列化的代码(您知道要创建哪个对象),这是一个简单的实现,
import org.scilca.sxp.*;
import org.scilca.sxp.exceptions.*;
public class main{
class XmlSerialization{.....} // We'll serialize this and
class XmlS2 {}
public static void main(String[] args){
// Write Data
Node rootNode = new XMLNode("ObjectSerializationData");
XMLNode firstObject = rootNode.add("XmlSerialization");
firstObject.add("IntField1").setValue("1");
firstObject.add("StringField2").setValue("strObject");
XMLNode secondObject = rootNode.add("XmlS2");
secondObject.add("IntField1").setValue("2"); // Added a element with a value
secondObject.add("BoolField2").setValue("false");
XMLNode thirdObject = rootNode.add("XmlSerialization");
thirdObject.add("IntField1").setValue("@null");
thirdObject.add("StringField2").setValue("str");
Document XmlDocument = new Document(rootNode);
Writer w = (Writer) XmlDocument.getWriter();
w.saveXML("D:/file.txt");
System.gc();
// Read and Deserialize
XMLReader xr = new XMLReader("D:/file.txt");
Document newXml = xr.parseDocument();
List<Node> XmlS1Nodes = newXml.searchMatches("XmlSerialization");
List<Node> XmlS2Nodes = newXml.searchMatches("XmlS2");
Node firstObject = XmlS1Nodes.get(0);
int field1 = (int) Double.parseDouble(firstObject.getAllChildren().get(0));
// Like this get all field and construct objects
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.