DataModel元素是Peach根元素的一个子元素。 数据模型通过指定其他子元素(如Number,Blob或String)来定义数据块的结构。
Peach的pit文件中可以指定任意个数的DataModel(至少一个),但是每个DataModel都必须有一个唯一的名字。通过逻辑将复杂的格式分解为更小的模型,这使得DataModel变得更为阅读、调试和重用。
名为“HelloWorld”的DataModel包含一个String字符串并输出“Hello world!”
<DataModel name="HelloWorld">
<String value="Hello world!" />
</DataModel>
DataModels可以引用其他DataModel并用ref属性继承它们的子元素。
<DataModel name="ParentModel">
<String value="Hello " />
</DataModel>
<DataModel name="HelloWorldModel" ref="ParentModel" >
<String value=" world!" />
</DataModel>
当提供reference(ref属性)时,被引用的DataModel的内容将被复制以作为创建新DataModel的基础。 新DataModel中的任何子元素都将覆盖该基础中具有相同名称的元素。 在这个例子中,子DataModel的Customized包含一个名为Key的字符串。 它的值会覆盖父项中的没有值的字符串“Key”。
<DataModel name="Template">
<String name="Key" />
<String value=": " token="true" />
<String name="Value" />
<String value="\r\n" token="true" />
</DataModel>
<DataModel name="Customized" ref="Template">
<String name="Key" value="Content-Length" />
<String name="Value">
<Relation type="size" of="HttpBody" />
</String>
<Blob name="HttpBody" />
</DataModel>
输出:
The output of “Template” is ” : \r\n”
The output of “Customized” is “Content-Length: 100\r\n”
在解析成DataModel时,Customized看起来就像两个DataModel的组合。
<DataModel name="Customized" ref="Template">
<String name="Key" value="Content-Length" />
<String value=": " token="true" />
<String name="Value">
<Relation type="size" of="HttpBody" />
</String>
<String value="\r\n" token="true" />
</DataModel>