2017-01-03 59 views
0

我正在使用eclipse在TTCN-3中编写测试用例。在测试案例之一,我从模拟器的响应,其包括多条记录的XML字符串,如下:解析TTCN中的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,所以任何的帮助深表感谢。谢谢。

回答

0

您提到了Eclipse,在这种情况下,它可以是Spirent的TTWorkbench专有解决方案,也可以是Eclipse的(爱立信)TITAN开源实现的TTCN-3编译器和执行程序。在这里我将以开源TITAN为例。

泰坦具有内部编解码器的XML,解释herehere。正如你在第二个例子中看到的那样:

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'作为函数),你自己编写一个编解码器。这对于一些复杂和(有时)不符合标准的协议很有用(请参阅Titan中的MQTT,CoAP和其他编解码器实现)。