0

我正在使用 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 的新手,因此非常感谢任何帮助。谢谢。

4

1 回答 1

1

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

Titan 具有用于 XML 的内部编解码器,在此处此处进行了说明。正如您在第二个示例中看到的:

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 和其他编解码器实现)。

于 2017-01-30T14:13:51.453 回答