Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagexml
title忽略不重要节点后的xml文件
collapsetrue
<?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文件(忽略掉不重要节点后)大概是这样的

Code Block
languagexml
title额外属性
collapsetrue
<?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"/>
<SomeConfig class="com.fr.plugin.io.file.SomeConfig">
<Attr status="100"/>
</SomeConfig>
</WorkBook>

写入SomeConfig节点的方式,就是在writeXML的时候,调用了

Code Block
languagejava
title写xml
public void writeConfig(XMLPrintWriter writer, SomeConfig config) {
   GeneralXMLTools.writeXMLable(writer, config, "SomeConfig");
}

同样的,在读取xml的时候,也就是把配置文件转化为WorkBook对象时,在读取SomeConfig节点的时候,是这样的

Code Block
languagejava
title读取xml
protected void readExtra(XMLableReader reader) {
   if (reader.isChildNode()) {
      String tagName = reader.getTagName();
      if (tagName.equals("SomeConfig")) {
          SomeConfig config = new SomeConfig();
          reader.readXMLObject(config);
          this.addAttrMark(config);
      }
   }
}

在调用了reader.readXMLObject(config);这句之后,就将xml中设置的属性赋值给了config对象了。