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 的内容(被修改前)，因为需要考虑并发.