我正在使用eclipse用TTCN-3编写一个测试用例。在其中一个测试用例中,我从模拟器获得了一个包含多个记录的XML字符串的响应,如下所示:
<Templates><Template><Id>1001</Id><Category>refill</Category><Description>Template description</Description><ApplicationId>AIR</ApplicationId><Name>Template name</Name><SchemaVersion>3.3.14</SchemaVersion></Template><Template><Id>1002</Id><Category>refill</Category><Description>Template Description 1</Description><ApplicationId>AIR</ApplicationId><Name>Template name</Name><SchemaVersion>3.3.14</SchemaVersion></Template></Templates>现在,我需要解析这个xml字符串并从中获取模板对象,以便在测试用例中进一步使用它们。
模板对象定义如下:
public type record Template
{
charstring id,
charstring category,
charstring description,
charstring applicationId,
charstring name,
charstring schemaVersion
}
public type record of Template Templates;我是TTCN的新手,所以非常感谢您的帮助。谢谢。
发布于 2017-01-30 22:13:51
您提到了Eclipse,在这种情况下,它可以是思博伦的TTWorkbench专有解决方案,也可以是Eclipse(爱立信)的TTCN-3编译器和执行器的TITAN开源实现。在这里,我将以开源的TITAN为例。
Titan有用于XML的内部编解码器,解释为here和here。正如您在第二个示例中看到的:
external function enc_AccessControlPolicy(in AccessControlPolicy pdu) return octetstring
with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }
external function dec_AccessControlPolicy(in octetstring stream) return AccessControlPolicy
with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }这会将XML转换为TTCN-3结构,反之亦然。
您还可以使用上述方法在C/C++中定义新函数并自己编写编解码器(如果您添加了一个包含'dec_AccessControlPolicy‘和'enc_AccessControlPolicy’作为函数的新文件)。这对于一些复杂的和(有时)不符合标准的协议很有用(参见MQTT、CoAP和Titan中的其他编解码器实现)。
https://stackoverflow.com/questions/41440403
复制相似问题