Преобразование XML документа согласно вставленым шаблонам.
Примеры:
Исходный XML:
<?xml version="1.0" ?>
<root>
<node id="${cid}">
<sub sid="2">integer value: ${ival}</sub>
</node>
<node id="${name}">
<sub sid="3">string: ${sval}</sub>
</node>
</root>
Код Java
public static class CtxObj {
private int ival;
private String sval;
public int getIval() {
return ival;
}
public void setIval(int ival) {
this.ival = ival;
}
public String getSval() {
return sval;
}
public void setSval(String sval) {
this.sval = sval;
}
}
....
XmlContext xctx = new XmlContext();
Map vars = new LinkedHashMap();
vars.put("cid", "component id");
vars.put("name", "name of node");
xctx.put("//node/@id", vars);
CtxObj ctxobj = new CtxObj();
ctxobj.setIval(10);
ctxobj.setSval("data string");
xctx.put("//sub/text()", ctxobj);
Результат
<root>
<node id="component id">
<sub sid="2">integer value: 10</sub>
</node>
<node id="name of node">
<sub sid="3">string: data string</sub>
</node>
</root>
Пример 2
XML
<?xml version="1.0" ?>
<root>
<ivalue>12</ivalue>
<avalue>${contextValue}</avalue>
</root>
Java
public static class TestObj {
private int ivalue;
public int getIvalue() {
return ivalue;
}
public void setIvalue(int ivalue) {
this.ivalue = ivalue;
}
private int avalue;
public int getAvalue() {
return avalue;
}
public void setAvalue(int avalue) {
this.avalue = avalue;
}
}
....
XmlContext xctx = new XmlContext();
Map vars = new LinkedHashMap();
vars.put("contextValue", 85);
xctx.put("//root/avalue/text()", vars);
xctx.eval(doc);
XmlCoder xc = new XmlCoder();
xc.type(TestObj.class).tag("root").build();
Object oTst01 = xc.readXml(doc);
TestObj to1 = (TestObj)oTst01;
assertTrue(to1.getIvalue()==12);
assertTrue(to1.getAvalue()==85);