15.XML提交格式规范


  硕正树列表具备增删改功能,在表格中,原始内容、用户交互操作导致的修改内容分别被保持在不同的缓存中,通过函数 GetChangedXML( ),就能取得完整的增删改信息。其原理图如下:
  GetChangedXML( ) 函数返回的是一个XML/JSON串,通常使用 Ajax 将其提交到服务器,由应用服务器对其做相应的处理,提交到数据库。
  GetChangedXML( ) 函数中,level 参数是重要的参数,含义是 “提交级别”,分如下4种:
  级别0:生成当前全部、最新内容(不包括修改前的原始内容);
  级别1:仅生成被修改过的单元格的内容(包括原始内容);
  级别2:在级别1的基础上,增加被修改过单元的整行内容;
  级别3,内容包含所有行、所有列、修改前后的内容.

  级别0最常用,并且XML规范最简单,如下所示:
<?xml version="1.0" encoding="UTF-8"?">
<!-- id在XML描述文件中定义 -->
<table id="?" level="0" 自定义属性="?" >
 <row>
   <!-- 列名处为真实的列名 -->
   <列名>Text</列名>
   ...
 </row>
 <row ...>
   ...
 </row>
 ...
</table>

  级别1、2、3的内容规定如下:
<?xml version="1.0" encoding="UTF-8"?">
<!-- id、key在XML描述文件中定义 -->
<table id="?" key="?" level="?" 自定义属性="?" >

 <!-- 区域1: 被修改的行 -->
 <modifiedRow>
  <!-- key为该行key列的原始值(被修改前), rowNumber为行号 -->
  <row key="?" rowNumber="?">
   <!-- 列名处为真实的列名, origin为原始值(被修改前),isModified仅用于级别2和级别3, Text处为修改后的值 -->
   <列名 origin="?" isModified="false">Text</列名>
   ...
  </row>
  ...
 </modifiedRow>
 
 <!-- 区域2: 新增行 -->
 <newRow>
  <!-- key为该行key列处输入的值, rowNumber为行号 -->
  <row key="?" rowNumber="?">
   <!-- 列名处为真实的列名, Text处为输入的内容 -->
   <列名>Text</列名>
   ...
  </row>
  ...
 </newRow>
 
 <!-- 区域3: 被删除的行 -->
 <deletedRow>
  <!-- key为该行key列的原始值(被修改前) -->
  <row key="?"></row>
  ...
 </deletedRow>
 
 <!-- 区域4: 未修改过的行(仅用于级别3 时) -->
 <notModifiedRow>
  <!-- 略,和区域1相比只是少了"Origin"属性 -->
 </notModifiedRow>

</table>
  GetChangedXML 函数有 returnFormat 选项参数, 允许返回的是 JSON 格式, JSON 格式在 Level=1 时是诸如 "JSON返回串示例" 这样的.

警告:应用服务器端开发的程序不应过于依赖级别 1/2/3 中的 origin 的内容(被修改前),因为需要考虑并发.