【仅供内部供应商使用,不提供对外解答和培训】
...
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?> <WorkBook xmlVersion="20151125" releaseVersion="8.0.0"> <Report class="com.fr.report.worksheet.WorkSheet" name="sheet1"> <DesignerVersion DesignerVersion="IAA"/> <PreviewType PreviewType="0"/> </WorkBook> |
...
然后我们使用给模板增加一个额外的属性的插件,简单的打开一个额外属性设计界面并保存,可以看到模板的xml文件(忽略掉不重要节点后)大概是这样的
...
在调用了reader.readXMLObject(config);这句之后,就将xml中设置的属性赋值给了config对象了。
上面我们看到了再WorkBook中读写其属性SomeConfig的的方法,这一节我们再看一下SomeConfig本身的属性如何去读写。上面我们看到了在WorkBook中读写其属性SomeConfig的方法,这一节我们再看一下SomeConfig本身的属性如何去读写。
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
public class SomeConfig extends AbstractIOFileAttrMark {
private int status = 0;
public SomeConfig() {
}
public SomeConfig(int status) {
this.status = status;
}
public int getStatus() {
return status;
}
@Override
public String xmlTag() {
return "SomeConfig";
}
@Override
public SomeConfig clone() {
SomeConfig cloned = (SomeConfig) super.clone();
cloned.status = status;
return cloned;
}
@Override
public void readXML(XMLableReader reader) {
if (reader.isChildNode()) {
String tagName = reader.getTagName();
if ("Attr".equals(tagName)) {
status = reader.getAttrAsInt("status", 0);
}
}
}
@Override
public void writeXML(XMLPrintWriter writer) {
writer.startTAG("Attr");
writer.attr("status", status);
writer.end();
}
} |
...
| Code Block | ||
|---|---|---|
| ||
<SomeConfig class="com.fr.plugin.io.file.SomeConfig"> <Attr status="100"/> </SomeConfig> |
同样的,读xml的时候,也是通过判断是否读到了Attr节点,来进行属性读取。